我有一个基于查询生成的检查按钮列表 - 它根据搜索条件填充,并且可以通过第二次搜索和/或清除列表来销毁。我还将checkbutton值存储在列表中(todoList)。我正在努力的地方是如何在"提交"中检查是否选中了支票按钮。功能。以下是包含todoList操作生成检查按钮的方式。我在逻辑中肯定遗漏了一些东西,我可以动态地获取值,但我没有看到它,需要一些帮助。
while data:
specno = data[0]
fname = data[1]
lname = data[2]
self.todoList.append(specno)
#self.var1 = IntVar()
n = len(self.buttonList)
lx = Checkbutton(self.listFrame,
text=self.todoList[n],
variable=self.todoList[n],
onvalue = 1,
offvalue = 0)
ni = n
self.buttonListNum.append(ni)
lx.grid(row=n, column=0, sticky='NW')
self.buttonList.append(lx)
data = cursor.fetchone()
答案 0 :(得分:1)
所以我想出了如何处理这个 - 因为状态检查要求checkbutton的变量属性是IntVar(),StrVar()等,我所做的是将变量设置为IntVar()然后追加那些与我的buttonList []和todoList []列表具有相同索引的单独列表,以便我稍后可以使用下面显示的函数checkStatus检查状态。
def add(self):
self.removeCheckButton()
entry = self.entryBox.get()
self.entryBox.delete(0, END)
search = ("%QUERY%")
cursor.execute(search)
data = cursor.fetchone()
while data:
specno = data[0]
fname = data[1]
lname = data[2]
self.todoList.append(specno)
var = IntVar()
n = len(self.buttonList)
lx = Checkbutton(self.listFrame,
text=self.todoList[n],
variable= selvar,
onvalue = 1,
offvalue = 0)
ni = n
self.buttonListNum.append(ni)
self.varList.append(var)
lx.grid(row=n, column=0, sticky='NW')
self.buttonList.append(lx)
data = cursor.fetchone()
def checkStatus(self):
for i in self.buttonListNum:
print(self.varList[i].get())
答案 1 :(得分:0)
您的代码但更干净
for
代替while
,然后您不需要data = cursor.fetchone()
self.buttonListNum
List
。 buttons
和vars
更具可读性。如果您希望名称中包含List
,则首选button_list
和var_list
for n, data in enumerate(cursor):
specno = data[0]
var = IntVar()
lx = Checkbutton(self.listFrame,
text=specno,
variable=var,
onvalue=1,
offvalue=0)
lx.grid(row=n, column=0, sticky='NW')
self.todoList.append(specno)
self.buttons.append(lx)
self.vars.append(var)
并检查变种:
def check_status(self):
for i, var in enumerate(self.vars):
print(i, var.get())