4

Tkinterを使用してGUIを作成しようとしていますが、メニューバーを実装するようになりました。いくつかのチュートリアルを見て、そのためのコードをいくつか作成しましたが、メニューバーが表示されないようです。背景が白の空白のフレームだけです。しかし、これは私のコードだけでは起こりません。前述のチュートリアルの1つのコードをコピーして新しいスクリプトに貼り付けると、同じ動作が示されます。

誰かがこれを引き起こしているものに光を当てることができれば幸いです。私のシステムはOSX10.5、Python 2.7、Tk8.4です。動作していないように見えるチュートリアルのコードは次のとおりです。

#!/usr/local/bin/python2.7

from Tkinter import *
from ttk import *

class App(Frame):
    def __init__(self):
            Frame.__init__(self)

            self.master.geometry('400x300')
            self.master.title(__file__)

            self.pack()

            self.menu = Menu(tearoff=False)
            self.master.config(menu = self.menu)

            fm = self.file_menu = None
            fm = Menu(self.menu, tearoff=False)
            self.menu.add_cascade(label='File', menu = fm)

            fm.add_command(label='Say Hello', command = self.say_hello)
            fm.add_separator()
            fm.add_command(label='Quit', command = self.quit)

            self.mainloop()

    def say_hello(self, *e):
            self.label = Label(self.master, text='Hello there!')
            self.label.pack(anchor=CENTER, fill=NONE, expand=YES, side=LEFT)

if __name__ == '__main__':
    App()

そして私のコードはここにあります:

from Tkinter import *

class App(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)

        parent.title("Cluedo Solver 1.0")

        menubar = Menu(root)
        menubar.add_command(label="File")
        menubar.add_command(label="Quit", command=root.quit())

        root.config(menu=menubar)

root=Tk()
root.geometry("300x250+300+300")
app=App(root)
root.mainloop()
4

4 に答える 4

4

説明付きコード

個人的な経験から、通常はすべてのウィジェットをウィジェット メソッドで管理する方が簡単であることがわかりました。それが私がここでやったことであり、うまくいきました。また、親の代わりにマスターを使用しました。コードを順を追って説明します。

from Tkinter import *

Tkinter (GUI のもの) をインポートします

class App(Frame):

という名前のクラスを作成します。Appこれは、Frameウィジェットが保持される場所です。

    def __init__(self, master):
        Frame.__init__(self, master)
        self.grid()
        self.widgets()

というメソッドを作成します__init__。これにより、クラスが初期化され、 という別のメソッドが実行されwidgetsます。

    def widgets(self):


        menubar = Menu(root)
        menubar.add_command(label="File")
        menubar.add_command(label="Quit", command=root.quit())

        root.config(menu=menubar)

メソッドを作成しますwidgets。ここにウィジェットmenubarが追加されます。これ以上ウィジェットを作成する場合、それらもここにあります。

root=Tk()
root.title("Menubar")
app=App(root)
root.mainloop()

最後に、ウィンドウ全体にいくつかのプロパティを指定します。というタイトルを付けてMenubar、クラスを実行しAppます。最後に、GUI のメインループを で開始しroot.mainloopます。

于 2013-03-13T00:58:20.653 に答える
0

Check your mac menu bar if you are doing any GUI that involves menubar which you will like to view or test. Its subtle and you may think you code is not to working. Click on the app(in this case python window), it will show a drop down menubar.

于 2015-07-22T06:30:26.537 に答える