翻牌子的代码两处没看懂……
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]不用其他?
1、为何用girl而不是用GIRL?
变量名赋值问题,因为你循环迭代的是用 girl 来承载元素的(for girl in GIRLS:),所以使用这个元素时就需要传入 gril,如果你承载元素是 GIRL ,那么你这里同样要写成 GIRL
2、刚测试如果没有variable=v[-1],程序好像也可以运行,所以variable=v[-1]有什么作用?为何用[-1]不用其他?
设置每个复选框的 value 值,[-1] 因为 append 添加元素是在列表的最后一个,所以这里取 [-1] 表示取最后一个元素,即前一行刚刚添加入的 IntVar() 对象
Twilight6 发表于 2022-5-12 12:34
变量名赋值问题,因为你循环迭代的是用 girl 来承载元素的(for girl in GIRLS:),所以使用这个元素 ...
似懂非懂,尤其第2个,还有更通俗易懂的解释吗?而且为什么不要的话好像也可以运行正常呢? lzb1001 发表于 2022-5-12 12:36
似懂非懂,尤其第2个,还有更通俗易懂的解释吗?
设置复选框各个的值,因为 IntVar() 对象方法 get() 可以获取这个对象内的属性
当你将复选框选中时 IntVar 对象中的值会被设置为 1,未选中时设置为 0 我们可以通过 调用 .get() 方法来获取此时复选框是否被选中
若没有设置这个属性,那么就获取不到复选框具体状态
Twilight6 发表于 2022-5-12 12:39
设置复选框各个的值,因为 IntVar() 对象方法 get() 可以获取这个对象内的属性
当你将复选框选中时...
也就是说没有也可以运行,但没有就取不到复选框具体状态,为了要取到复选框具体状态,所以必须要用 1、循环在这段代码中的作用是……?
2、代码运行后,是先生成一个框架,然后每循环一次,依次添加'西施', '王昭君', '貂蝉', '杨玉环四个复选框,是这样吗?
今天走进这段代码的死胡同了,一直绕不出来
页:
[1]