【发布时间】:2018-01-08 22:58:44
【问题描述】:
我正在尝试使用.get() 获取Tkinter.Checkbutton 的变量的值,但出现错误。
import Tkinter as tk
class myApp(tk.Tk):
def __init__(self, parent):
tk.Tk.__init__(self, parent)
self.parent = parent
self.grid()
self.var = tk.IntVar()
self.cb = tk.Checkbutton(self.parent, variable=self.var)
self.cb.bind('<Button-1>', self.useValue)
print self.var.get() # works
print self.cb.get() # does not work
print self.cb.cget('variable') # prints something like PYNUMVAR1
print self.cb.cget('variable').get() # error I mention below
print self.cb.var.get() # error
print self.cb.val.get() # error
def useValue(self, event):
print event.widget.cget('variable').get()) # why not?
if __name__ == '__main__':
runit = myApp(None)
runit.mainloop()
我尝试了很多我在 stackoverflow 和其他教程网站上看到的所有内容的组合。我得到的错误是:
AttributeError: '_tkinter.Tcl_Obj' object has no attribute 'get'
它应该是IntVar,而不是_tkinter.Tcl_Obj 对象,它没有get 属性,当我尝试时,它会在self.var 上引发属性错误,如下所示:
print self.var.crumpet()
控制台让我知道它也是那种类型的对象。 (它在我的第一个实验中做到了这一点,但我无法让它在上面的示例代码中的 IntVar 实例上重新创建此错误消息,所以我认为这可能是错误的。)
我知道我可以在self.var 上使用get(),但如果我通过事件参数将小部件传递给回调函数,我希望能够获取它的值。
我怎样才能得到Checkbutton 的值而不必对变量做任何事情?我应该避免给它分配一个变量吗?
【问题讨论】:
标签: python python-2.7 tkinter