0

テキスト ファイルの 1 つを 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() 

ロード ファイルは機能しますが、現在ロードされているテキスト ドキュメントはどこにありますか? リストボックスに表示するにはどうすればよいですか?

4

1 に答える 1

3

これは機能します:

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._master)、それは実際には何もしなかったので、私は最初のものを削除しました。次に、「カスケード」を追加しました。次に、実際にメニューをルートウィンドウ menubar.add_cascade(label='File',menu=filemenu)に添付しました。Tkself._master.config(menu=menubar)

于 2012-05-16T13:23:34.090 に答える