【问题标题】:Displaying active list in tkinter window class在 tkinter 窗口类中显示活动列表
【发布时间】:2021-02-20 21:50:39
【问题描述】:

我正在使用 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()

在上面的代码中,我将 active_list 初始化为一个空列表。打开新列表时,它会将 active_list 设置为 csv 文件中的新列表。下面的类show_list() 方法在GUI 上的文本框中打印active_list。主要问题是加载新列表时它不会更新。它可以打印在__init__() func 中初始化但似乎无法更新的空 active_list。

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 函数在创建类时将 active_list 重置为空列表。有人可以建议一些修复吗?谢谢

【问题讨论】:

标签: python list class user-interface tkinter


【解决方案1】:

您需要一种机制来检查列表是否被修改,或者更简单地说,需要一种定期刷新显示的机制。

可能是这样的:

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`

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 2018-01-08
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2020-11-22
    相关资源
    最近更新 更多