更新所有按钮上的列表框/复选框,按“刷新GUI” Tkinter

时间:2019-11-13 16:19:02

标签: python-3.x tkinter

我的GUI非常大,因此无法将所有代码都放在这里以使其正常工作。因此,一个普遍的问题是:我试图通过按按钮来更新GUI的所有可用数据,而不破坏窗口并重建窗口。 我当前的方法是“解锁”包含带有可用数据列表的复选框的文本框,并使用以下内容将其删除:

def refreshfunciton(): #called on button push elsewhere
        self.Tab1Text.configure(state='normal')
        self.Tab2Text.configure(state='normal')
        self.Tab3Text.configure(state='normal')
        self.Tab4Text.configure(state='normal')
        self.Tab5Text.configure(state='normal')
        #to unlock the text boxes so changes can be made

        #below "Tab1CheckButton" ect are lists established elsewhere
        for i in self.Tab1CheckButton:
            i.pack_forget()

        for i in self.Tab2CheckButton:
            i.pack_forget()

        for i in self.Tab3CheckButton:
            i.pack_forget()

      #code going here to update the lists that the checkboxes pull from

        self.createCheckBoxes()
     #function that creates all the checkboxes above. 

     #code to lock the text boxes that contain the check boxes. 

如果有一个更简单的理由而不破坏GUI并重建它,我很乐意这样做。

1 个答案:

答案 0 :(得分:0)

我建议清除列表框/复选框并重写内容:

您可以使用listbox.delete(0,END)

删除列表框的内容

您可以使用checkbox.config(state=DISABLED)

禁用复选框

然后,通过数据列表重写和重新调整列表框/复选框,将每个数据值一个接一个地插入for循环中,例如

for i in range(len(data)):
    listbox.insert("{}".format(data[i]), END)