Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter Checkbutton和事件回调函数_Python_Events_Tkinter - Fatal编程技术网

Python Tkinter Checkbutton和事件回调函数

Python Tkinter Checkbutton和事件回调函数,python,events,tkinter,Python,Events,Tkinter,下面是我在Effbot网站上找到的一个小代码示例,它与我想在我的一个程序中执行的操作非常接近: from Tkinter import * fen =Tk() class test_Tk_class: def __init__(self): self.var = IntVar() c = Checkbutton( fen, text="Enable Tab", variable=self.var,

下面是我在Effbot网站上找到的一个小代码示例,它与我想在我的一个程序中执行的操作非常接近:

from Tkinter import *

fen =Tk()

class test_Tk_class:
    def __init__(self):
        self.var = IntVar()
        c = Checkbutton(
            fen, text="Enable Tab",
            variable=self.var,
            command=self.cb)
        c.pack()

    def cb(self,event):
        print "variable is", self.var.get()

    a = test_Tk_class()
    fen.mainloop()

但是,此代码不起作用。回调函数cb不起作用,因为它有2个参数,但没有给出任何参数。如何指定
事件
参数?

在这种情况下,此代码根本不需要
事件
。我只需将其完全移除即可使其工作:

def cb(self):
    print "variable is", self.var.get()
只有在将函数绑定到按键或鼠标单击时,才可以这样构造代码。但是,如果要选中/取消选中checkbutton,则不需要它


我不知道在Effbot上编写此代码的人想做什么,但我认为他做得不对。也许他输入了一个错误,或者脑子里想的是别的什么。

您可以使用函数的无事件版本。此方法允许您将其用于
Checkbutton
命令或事件回调。您可以在下面找到修订版本:

def cb(self,event=None):
    print "variable is", self.var.get()

更好的方法是使用
event=None
,这样回调将适用于按钮和绑定