更新列表框,文件名输出从另一个类中选择Python Tkinter

时间:2018-01-18 22:17:58

标签: python tkinter listbox

#___________________________________________________________
def open_files(self):


    file_name_list = []
    FM_file_name_list = []
    RG_file_name_list = []

    path = easygui.fileopenbox(multiple=True)

    #print(path)

    for i in range(len(path)):


        file_name_list.append(path[i])


        filename, file_extension = os.path.splitext(path[i])


        #print (file_extension)

        if file_extension == '.FDV':

            FM_file_name_list.append(os.path.basename(path[i]))

        if file_extension == '.R':

            RG_file_name_list.append(os.path.basename(path[i]))

类GraphPage(tk.Frame):

def __init__(self, parent, controller):
    self.controller=controller

    tk.Frame.__init__(self, parent)


    self.FM_List_Box =tk.Listbox(self)
    self.FM_List_Box.config(highlightbackground='steelblue', highlightthickness = 1)
    self.FM_List_Box.pack(side=tk.LEFT, fill=tk.Y, padx = 5)

我正在尝试将列表'FM_file_name_list'中的值放入列表框'self.FM_List_Box'中。方法'open_files'包含在不同类的应用程序的菜单栏中,因此列表框最初是在运行之前创建的。

如果有人能帮助我了解如何从不同类中的方法更新列表框的值,将非常感激。

1 个答案:

答案 0 :(得分:0)

这相对简单。

您只需要从另一个类调用class的变量。

这可以通过以下方式完成:

from tkinter import *

class OtherClass:
    def __init__(self):
        OtherClass.list = ["1", "2", "3"]

class App:
    def __init__(self, root):
        self.root = root
        self.listbox = Listbox(self.root)
        self.listbox.pack()
        for i in OtherClass.list:
            self.listbox.insert(END, i)

OtherClass()
root = Tk()
App(root)
root.mainloop()

所以我们这里有class OtherClass,其中包含list OtherClass.list。然后,我们可以通过调用listApp class访问此OtherClass.list

如果您运行该程序,我们会看到我们已成功将listclass拉到另一个{。\ n}。