Python-GUI-Tkinter列表框

Python-GUI-Tkinter列表框,python,file,listbox,tkinter,Python,File,Listbox,Tkinter,我无法将一个文本文件加载到GUI中。我有一个加载函数(在菜单栏上),并创建了一个列表框 加载菜单和列表框的代码: class View(Listbox): def __init__(self, master): Listbox.__init__(self, master) #makes view class listbox class Controller(object): def __init__(self, master): ""

我无法将一个文本文件加载到GUI中。我有一个加载函数(在菜单栏上),并创建了一个列表框

加载菜单和列表框的代码:

class View(Listbox):
    def __init__(self, master):
        Listbox.__init__(self, master)      #makes view class listbox


class Controller(object):
    def __init__(self, master):
        """ Main interface:
        master - the top level window

        """
        self._master = master
        menubar = Menu(self._master)

        frame1 = Frame(self._master)
        frame1.pack(side=TOP, fill=BOTH, padx=5,expand=True)

        self._Listbox=View(frame1)
        self._Listbox.pack(side = TOP,fill=BOTH, expand = True,pady=20)

        menubar = Menu(self._master)
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="Open rooms file", command = self.file_open)


    def file_open(self):
        filename = tkFileDialog.askopenfilename() 
加载文件可以工作,但当前加载的文本文档在哪里?如何将其显示在我的列表框中?

此功能:

from Tkinter import *
import tkFileDialog

class View(Listbox):
    def __init__(self, master):
        Listbox.__init__(self, master)      #makes view class listbox


class Controller(object):
    def __init__(self, master):
        """ Main interface:
        master - the top level window
        """
        self._master = master

        frame1 = Frame(self._master)
        frame1.pack(side=TOP, fill=BOTH, padx=5,expand=True)

        self._Listbox=View(frame1)
        self._Listbox.pack(side = TOP,fill=BOTH, expand = True,pady=20)

        menubar = Menu(self._master)
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="Open", command = self.file_open)
        menubar.add_cascade(label='File',menu=filemenu)
        self._master.config(menu=menubar)

    def file_open(self):
        filename = tkFileDialog.askopenfilename()

        #insert each line in the file into the listbox
        with open(filename,'r') as f:
            for line in f:
                self._Listbox.insert(END,line)



if __name__ == "__main__":
    root=Tk()
    c=Controller(root)
    root.mainloop()
这与您的代码只是略有不同。。。首先,我删除了第一个
menubar=Menu(self.\u master)
,因为它实际上什么都没做。第二,我添加了一个“cascade”菜单栏。添加cascade(label='File',menu=filemenu),第三,我实际将菜单附加到根
Tk
窗口:
self.\u master.config(menu=menubar)
这可以:

from Tkinter import *
import tkFileDialog

class View(Listbox):
    def __init__(self, master):
        Listbox.__init__(self, master)      #makes view class listbox


class Controller(object):
    def __init__(self, master):
        """ Main interface:
        master - the top level window
        """
        self._master = master

        frame1 = Frame(self._master)
        frame1.pack(side=TOP, fill=BOTH, padx=5,expand=True)

        self._Listbox=View(frame1)
        self._Listbox.pack(side = TOP,fill=BOTH, expand = True,pady=20)

        menubar = Menu(self._master)
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="Open", command = self.file_open)
        menubar.add_cascade(label='File',menu=filemenu)
        self._master.config(menu=menubar)

    def file_open(self):
        filename = tkFileDialog.askopenfilename()

        #insert each line in the file into the listbox
        with open(filename,'r') as f:
            for line in f:
                self._Listbox.insert(END,line)



if __name__ == "__main__":
    root=Tk()
    c=Controller(root)
    root.mainloop()

这与您的代码只是略有不同。。。首先,我删除了第一个
menubar=Menu(self.\u master)
,因为它实际上什么都没做。第二,我添加了一个“cascade”
menubar.add_cascade(label='File',menu=filemenu)
,第三,我实际将菜单附加到根
Tk
窗口:
self.\u master.config(menu=menubar)

?很抱歉,我没有发布我的导入或完整代码。但是是的,这就是它看起来的样子。你能不能让它在加载文本文件时显示在列表框中?我不完全理解你想要什么。。。此时将显示列表框,其中没有任何内容。文本文件中有什么?文本文件的每一行都应该是列表框中的一个新条目吗?另外,这与您的代码不太一样--我将进行编辑以指出差异。@AnthonyDo:我进行了编辑以指出我的代码与您的代码之间的差异--我还添加了一个简单的循环,将文件中的每一行打包到列表框中的不同行中。这是我从GUI加载文本文档时想要的内容。一个形象会更好。谢谢你:)。我将试用file_open函数,看看是否可以获得所需的格式。谢谢你花时间帮助我。?很抱歉,我没有发布我的导入或完整代码。但是是的,这就是它看起来的样子。你能不能让它在加载文本文件时显示在列表框中?我不完全理解你想要什么。。。此时将显示列表框,其中没有任何内容。文本文件中有什么?文本文件的每一行都应该是列表框中的一个新条目吗?另外,这与您的代码不太一样--我将进行编辑以指出差异。@AnthonyDo:我进行了编辑以指出我的代码与您的代码之间的差异--我还添加了一个简单的循环,将文件中的每一行打包到列表框中的不同行中。这是我从GUI加载文本文档时想要的内容。一个形象会更好。谢谢你:)。我将试用file_open函数,看看是否可以获得所需的格式。谢谢你花时间帮我。对不起,我打错了。它应该是展示的。因为我正在将文本文件加载到GUI中,所以我希望文本文件显示在lixtbox上。对不起,我没有正确键入。它应该是展示的。因为我正在将文本文件加载到GUI中,所以我希望文本文件显示在lixtbox上。