Python 在tkinter窗口类中显示活动列表
我正在使用tkinter为我正在制作的组件清单应用程序创建GUI。GUI将打印程序的当前活动列表。我正在使用一个类作为主窗口,在加载一个新的列表后,我无法显示当前列表Python 在tkinter窗口类中显示活动列表,python,list,class,user-interface,tkinter,Python,List,Class,User Interface,Tkinter,我正在使用tkinter为我正在制作的组件清单应用程序创建GUI。GUI将打印程序的当前活动列表。我正在使用一个类作为主窗口,在加载一个新的列表后,我无法显示当前列表 def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.active_list = [] self.dir = os
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.active_list = []
self.dir = os.getcwd()
self.create_window()
在上面的代码中,我将活动列表初始化为空列表。打开新列表时,它会将活动列表设置为csv文件中的新列表。下面的类“show\u list()
方法在GUI的文本框中打印活动的\u列表。主要问题是加载新列表时它不会更新。它可以打印在\uuuu init\uuuu()函数中初始化但似乎无法更新的空活动列表
def show_list(self):
self.scrlbr1 = tk.Scrollbar(self.master)
self.disp_list = tk.Text(self.master, height=5, width=50)
if not self.active_list:
self.disp_list.insert(tk.END, 'no list loaded')
else:
self.disp_list.insert(tk.END, self.active_list)
self.scrlbr1.pack(side=tk.RIGHT, fill=tk.Y)
self.disp_list.pack(side=tk.LEFT, fill=tk.Y)
我最初的想法是,创建类时,tk mainloop func正在将活动列表重置为空列表。有人能提出一些解决办法吗?谢谢您需要一种机制来检查列表是否被修改,或者更简单地说,需要一种机制来定期刷新显示
也许是这样:
def __init__(self, master=None):
super().__init__(master)
...
self.create_show_list_widgets()
def create_show_list_widgets(self):
"""creates the widgets used to display the list
"""
self.scrlbr1 = tk.Scrollbar(self.master)
self.disp_list = tk.Text(self.master, height=5, width=50)
self.scrlbr1.pack(side=tk.RIGHT, fill=tk.Y)
self.disp_list.pack(side=tk.LEFT, fill=tk.Y)
self.show_list()
def show_list(self):
"""refreshes the display of the list every second
"""
if not self.active_list:
self.disp_list.insert(tk.END, 'no list loaded')
else:
self.disp_list.insert(tk.END, self.active_list)
self.after(1000, self.show_list) # assuming your class is a subclass of `tk.Tk`, or `tk.Frame`
你应该提供。