我正在尝试编写一个程序,因此每次单击该复选框时,它都会将“hello world”打印到输出文件中。
到目前为止,我已经在条目小部件中打印了这些东西,但是如何获得复选框的状态,所以当它点击它打印“hello world”时,如果它没有点击它什么都不做?
import Tkinter as Tk
from Tkinter import StringVar
class SampleApp(Tk.Tk):
def __init__(self):
Tk.Tk.__init__(self)
self.button = Tk.Button(self, text="Get", command=self.on_button)
self.button.pack()
labelText=StringVar()
labelText.set(" First Name")
labelDir=Tk.Label(self, textvariable=labelText, height=1)
labelDir.pack()
directory=StringVar(None)
self.can_fname =Tk.Entry(self,textvariable=directory,width=50)
self.can_fname .pack()
labelText=StringVar()
labelText.set(" Last Name")
labelDir=Tk.Label(self, textvariable=labelText, height=1)
labelDir.pack()
directory=StringVar(None)
self.can_lname =Tk.Entry(self,textvariable=directory,width=50)
self.can_lname .pack()
var = Tk.IntVar()
cb = Tk.Checkbutton(self, text="here", variable=var)
cb.pack()
def on_button(self):
if self.var.get():
print "the lights are on"
else:
print "the lights are off"
a=self.can_fname.get()
b='hello %s' %(a)
with open('filename.txt', 'w') as myfile:
myfile.write(b)
app = SampleApp()
app.mainloop()
答案 0 :(得分:1)
var
是__init__
方法或构造函数的局部变量。您基本上收到以下错误:
AttributeError: 'tkapp' object has no attribute 'var'
因为var
方法终止执行后__init__
被垃圾收集。您应该将var
更改为self.var
,以使其成为该类的字段(属性)。