擅长:python、mysql、java
<p>我认为你的要求可以从<a href="http://www.python-course.eu/tkinter_checkboxes.php" rel="nofollow noreferrer">here</a>中得到。</p>
<p>对于每个<code>item in lst</code>变量,必须预先创建不同的<code>IntVar()</code>变量,以指示每个复选框的独立状态。
我认为除了手动创建它们之外没有其他方法(我假设您没有100个复选框)。
我将重新使用<a href="https://stackoverflow.com/a/9027244/4526730">this</a>answer中的代码并执行以下操作:</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.var1 = tk.IntVar()
self.var2 = tk.IntVar()
self.var3 = tk.IntVar()
.
.
.
vars = [self.var1,self.var2,self.var3,...]
for item, var in zip(self.lst, vars):
cb = tk.Checkbutton(text="/dev/%s" % item, variable=var, command= lambda: self.myCallback(var))
self.text.window_create("end", window=cb)
self.text.insert("end", "\n") # to force one checkbox per line
def myCallback(self,event,var):
each_var = var.get()
print ("var is %s", str(each_var))
</code></pre>