【发布时间】:2014-03-03 15:36:35
【问题描述】:
我正在尝试在循环中生成独立的 Checkbutton,但具有相同名称的 Checkbutton 可以一起工作。我不知道我的错误在哪里......
#!/usr/bin/env python
#-*-coding:utf-8-*-
import os
from Tkinter import *
import ttk
def checkBoxText(st):
if st == 0:
st="Disabled"
if st == 1:
st="Enabled"
return st
root = Tk()
winSt={1:1,2:1,3:0,4:0}
cbTexts={}
cbVariables={}
cb={}
cb_x={ "1":"0.0", "2":"0.0", "3":"0.6", "4":"0.6" }
cb_y={"1": "0.1", "2": "0.8", "3": "0.1", "4": "0.8"}
for i in sorted(winSt.keys()):
cbTexts[i] = StringVar()
cbTexts[i].set(checkBoxText(winSt[i]))
cbVariables[i] = IntVar()
cbVariables[i].set(winSt[i])
cb[i] = Checkbutton(root, text=cbTexts[i].get(), variable=cbVariables[i].get())
cb[i].place(relx=cb_x[str(i)], rely=cb_y[str(i)], relheight=0.1,relwidth=0.4)
mainloop()
【问题讨论】:
-
我也不知道你的错误在哪里。如果您解释了预期输出与实际输出以及您可能遇到的任何错误,将会有所帮助。
-
对不起,我更正了标题和问题,因为我确实写了组合框而不是复选按钮。所以我觉得我看到了错误,当我在循环中创建检查按钮并设置“变量”配置并且谁具有相同的变量值时,它们就像一个检查按钮一样工作。也许我必须在循环后检查检查按钮,但如何? cb["1"].configure(variable=1) 这不起作用。
-
将
variable=cbVariables[i].get()更改为variable=cbVariables[i]。 -
天哪。非常感谢@Joel Cornett。直到现在,它让我发疯了。它有效:)
标签: python variables loops button tkinter