gpt4 book ai didi

Python - Tkinter - 在列表中设置 IntVar

转载 作者:行者123 更新时间:2023-11-30 23:11:48 25 4
gpt4 key购买 nike

我编写了一个应用程序,它从用户那里获取一些数据,查询网站的 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()

按下按钮时的错误消息:

TypeError: unbound method set() must be called with IntVar instance as first
argument (got int instance instead)

我做错了什么?

最佳答案

经典问题。您添加 IntVar 类型,而不是添加 IntVar 类型的对象。添加括号,如下所示:

self.box_vars.append(tk.IntVar())

关于Python - Tkinter - 在列表中设置 IntVar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com