当我打开窗口时,我有一个我需要勾选的Checkbutton作为默认值。将变量设置为on值似乎不起作用,那么我该怎么办? 这是一个简短的,自包含的示例,其中包含未复制的复选框。
#!/usr/bin/python3
from tkinter import ttk
from tkinter import *
class Sizzle(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Sizzle")
self.style = ttk.Style()
self.style.theme_use("default")
self.pack(fill=BOTH, expand=1)
ifalphagrams=BooleanVar()
b=Checkbutton(self, variable=ifalphagrams, onvalue=True, offvalue=False)
b.grid(row=1,column=3 ,sticky=W)
b.select()
def main():
root = Tk()
root.geometry("700x700+700+700")
app = Sizzle(root)
root.mainloop()
if __name__ == '__main__':
main()
答案 0 :(得分:1)
很可能你正在使用一个局部变量来保存对StringVar
的引用,并且它正在收集垃圾。当您阻止变量被垃圾收集时,您的代码可以正常工作:
from Tkinter import *
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
ifalphagrams = StringVar()
alp = Checkbutton(self, variable=ifalphagrams, onvalue='yes', offvalue='no')
alp.grid(row=1,column=3, sticky=W)
alp.select()
self.ifalphagrams = ifalphagrams
if __name__ == "__main__":
root = Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()