鱼C论坛

 找回密码
 立即注册
查看: 1471|回复: 5

翻牌子的代码两处没看懂……

[复制链接]
发表于 2022-5-12 12:26:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
win10/python3.7.6

--------------------------

from tkinter import *

root = Tk()

GIRLS = ['西施', '王昭君', '貂蝉', '杨玉环',]

v = []

for girl in GIRLS:
    v.append(IntVar())
    b = Checkbutton(root, text=girl,  variable=v[-1])
    b.pack(anchor=W, padx=25, pady=5)
   

root.title('翻牌选美女')


mainloop()


问题(2处红色字体):

1、为何用girl而不是用GIRL?

2、刚测试如果没有variable=v[-1],程序好像也可以运行,所以variable=v[-1]有什么作用?为何用[-1]不用其他?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-12 12:34:13 | 显示全部楼层

1、为何用girl而不是用GIRL?


变量名赋值问题,因为你循环迭代的是用 girl 来承载元素的(for girl in GIRLS:),所以使用这个元素时就需要传入 gril,如果你承载元素是 GIRL ,那么你这里同样要写成 GIRL


2、刚测试如果没有variable=v[-1],程序好像也可以运行,所以variable=v[-1]有什么作用?为何用[-1]不用其他?


设置每个复选框的 value 值,[-1] 因为 append 添加元素是在列表的最后一个,所以这里取 [-1] 表示取最后一个元素,即前一行刚刚添加入的 IntVar() 对象

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 12:36:41 | 显示全部楼层
Twilight6 发表于 2022-5-12 12:34
变量名赋值问题,因为你循环迭代的是用 girl 来承载元素的(for girl in GIRLS:),所以使用这个元素 ...


似懂非懂,尤其第2个,还有更通俗易懂的解释吗?而且为什么不要的话好像也可以运行正常呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 12:39:54 | 显示全部楼层
lzb1001 发表于 2022-5-12 12:36
似懂非懂,尤其第2个,还有更通俗易懂的解释吗?


设置复选框各个的值,因为 IntVar() 对象方法 get() 可以获取这个对象内的属性

当你将复选框选中时 IntVar 对象中的值会被设置为 1,未选中时设置为 0 我们可以通过 调用 .get() 方法来获取此时复选框是否被选中

若没有设置这个属性,那么就获取不到复选框具体状态
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 13:56:37 | 显示全部楼层
Twilight6 发表于 2022-5-12 12:39
设置复选框各个的值,因为 IntVar() 对象方法 get() 可以获取这个对象内的属性

当你将复选框选中时  ...

也就是说没有也可以运行,但没有就取不到复选框具体状态,为了要取到复选框具体状态,所以必须要用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 21:19:40 | 显示全部楼层
1、循环在这段代码中的作用是……?

2、代码运行后,是先生成一个框架,然后每循环一次,依次添加'西施', '王昭君', '貂蝉', '杨玉环四个复选框,是这样吗?

今天走进这段代码的死胡同了,一直绕不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 08:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表