擅长:python、mysql、java
<p>您的CheckButton命令正在执行回调,因为这就是您要它执行的操作。该命令应该是对tkinter在单击选中按钮时可以执行的函数的引用。Tkinter将事件对象传递给回调函数。请参阅本<a href="http://effbot.org/tkinterbook/checkbutton.htm" rel="nofollow">Effbot</a>教程,但看起来您已经在尝试实现它们的模式。您可以从event.widget属性获得对checkbutton的引用,如<a href="http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm" rel="nofollow">here</a>所述。最后,如果要在回调中引用变量,则需要将变量附加到“self”。</p>
<pre><code>def relist(self):
self.text.delete(1.0,END)
p = subprocess.Popen (['ls', '/dev/'], stdout = subprocess.PIPE)
lst = p.communicate()[0].split('\n')
print lst
self.var = tk.IntVar()
for item in lst:
cb = tk.Checkbutton(text="/dev/%s" % item, variable=self.var, command=self.myCallback)
self.text.window_create("end", window=cb)
self.text.insert("end", "\n") # to force one checkbox per line
def myCallback(self,event):
var = self.var.get()
print ("var is %s", str(var))
</code></pre>