Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在tkinter窗口类中显示活动列表_Python_List_Class_User Interface_Tkinter - Fatal编程技术网

Python 在tkinter窗口类中显示活动列表

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

我正在使用tkinter为我正在制作的组件清单应用程序创建GUI。GUI将打印程序的当前活动列表。我正在使用一个类作为主窗口,在加载一个新的列表后,我无法显示当前列表

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`
你应该提供。