我写了一个应用程序,从用户那里获取一些数据,查询网站的API,并返回并处理API给出的数据。我试图通过为每个检索到的项目创建复选框,让用户更好地控制接下来发生的事情。在
因为每次使用时检索到的项目数会有所不同,所以我将复选框和IntVars放入列表中。但是,当我尝试将IntVars设置为1(这样它们都开始检查)时,我得到一个TypeError,告诉我它希望将IntVar实例作为第一个参数,但这对我来说没有任何意义,因为我首先尝试为IntVar调用一个方法。在
这是我的代码的简化版本,它会生成相同的错误:import Tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.test_names = ["Box 1", "Box 2", "Box 3", "Box 4"]
self.boxes = []
self.box_vars = []
self.box_num = 0
btn_test1 = tk.Button(self, text="Test 1", width = 11, command = self.test1)
btn_test1.grid()
def test1(self):
for name in self.test_names:
self.box_vars.append(tk.IntVar)
self.boxes.append(tk.Checkbutton(self, text = name, variable = self.box_vars[self.box_num]))
self.box_vars[self.box_num].set(1)
self.boxes[self.box_num].grid(sticky = tk.W)
self.box_num += 1
root = tk.Tk()
app = Application(master=root)
app.mainloop()
以及按下按钮时的错误消息:
^{pr2}$
我做错什么了?在