一旦代码行被执行,是否可以从中删除/停用变量?如果没有,我还有什么选择?我在这里写了一段代码来说明我的意思:
from Tkinter import *
root = Tk()
ent_var1 = StringVar()
ent_var2 = StringVar()
ent_var3 = StringVar()
cbtn_var1 = BooleanVar()
cbtn_var2 = BooleanVar()
cbtn_var3 = BooleanVar()
ent1 = Entry(textvariable=ent_var1).pack()
ent2 = Entry(textvariable=ent_var2).pack()
ent3 = Entry(textvariable=ent_var3).pack()
cbtn1 = Checkbutton(text=1, variable=cbtn_var1).pack(side = LEFT)
cbtn2 = Checkbutton(text=2, variable=cbtn_var2).pack(side = LEFT)
cbtn3 = Checkbutton(text=3, variable=cbtn_var3).pack(side = LEFT)
# prints what was written in entires
def set_variables():
lbl1 = ent_var1.get()
lbl2 = ent_var2.get()
lbl3 = ent_var3.get()
print lbl1, lbl2, lbl3
return
# calls set_variables
btn1 = Button(root, text="Done!", command=set_variables).pack()
root.mainloop()
填写条目并按“完成”,写的是打印出来的。但是,如何使其在按下复选框时,链接到它的条目不会在下次按下“完成”时打印出来呢?文本为“1”的复选框应与第一个条目链接,以此类推。你知道吗
我想到了这个:
def should_print():
global lbl_print
if cbtn1:
lbl_print += lbl1
if cbtn2:
lbl_print += lbl2
if cbtn3:
lbl_print += lbl3
但它只会在此时打印变量的值,而不是变量本身(这意味着每次变量更改时我都必须运行此代码)。你知道吗
谢谢你!你知道吗
如果每个按钮都按下了,为什么不直接签入
set_variables
函数呢?例如:每个
print
语句末尾的逗号将导致它不打印换行符,换行符由末尾的print
处理。此外,这将使得如果复选框被选中,他们输入的值将不会打印。如果只希望在选中该框时打印,请删除not
如果你稍微重构一下你的代码,你可以用一行代码做同样的事情。首先,添加以下行:
对于列表中的变量,您可以在一些Python魔术中使用列表理解:
如果你以前没有看过列表理解法,我建议你仔细阅读一下——它们非常方便。你知道吗
你的问题很难理解。我认为您想要的是
set_variables
只打印与选中复选框关联的变量。如果是这样的话,下面是你想要的吗?你知道吗有其他方法可以完成同样的事情,但我猜您的主要目标是根据选中的复选按钮来决定打印什么。这样做,尽管是以一种相当笨拙的方式。你知道吗
相关问题 更多 >
编程相关推荐