1

現在、Python で Tkinter モジュールを使用するプロジェクトに取り組んでいます。メニュー ウィジェットを使用しており、メニューの各コマンドには別のコマンドが関連付けられています。これらの各コマンドは、新しいフレームを開きます。グリッド ジオメトリ マネージャーを使用しています。

私の問題は、ユーザーがフレームからフレームに切り替えられるようにしたいのですが、これを実行しようとすると、切り替えではなくフレームが重なり合ってしまうことです。アクティブなフレームを非表示にしてから新しいフレームを開くにはどうすればよいですか? 可能なフレームのリストを繰り返し処理して、すべてを非表示にするように指示する必要はありません。

これまでに書いたコードは次のとおりです。

import Tkinter as tkinter
root = tkinter.Tk()
root.minsize(400,300)
welcome = tkinter.Frame(root).grid()
label = tkinter.Label(welcome, text="Welcome to my program").grid(row=0, column=3)
button = tkinter.Button(welcome,text="Exit",command=root.destroy).grid(row=3, column=1)
def newFrame():
        newFrame = tkinter.Frame(root).grid()
        newFrame_name = tkinter.Label(newFrame, text="This is another frame").grid()
menu = tkinter.Menu(root)
root.config(menu=menu)

main_menu = tkinter.Menu(menu)
menu.add_cascade(label="Main Menu", menu= main_menu)
main_menu.add_command(label="New Frame", command=newFrame)

#menu.add_command(label="Exit", command=root.destroy, menu= filemenu)


root.mainloop()

ユーザーがメニューから [新しいフレーム] オプションを選択すると、ウェルカム フレームを newFrame に置き換える必要があります。

4

1 に答える 1

1

placeまたはを使用gridしてフレームを互いの上に積み重ねる場合は、liftメソッドを使用して積み重ね順序を変更するだけです。

于 2012-07-16T13:02:03.430 に答える