2017-05-05 23 views
0

私は、メニューウィジェットを使ってアクセスするフレームの数を作成しようとしています。メニューを使用するとき、コマンドの1つをクリックすることができます。フレームが表示され、メニューウィジェットは一番上に表示されるので、どこに行くかを簡単に決めることができます。Python、Tkinter OptionMenuウィジェットとそれを使用する

私は、ログインページの後に呼び出される関数内でオプションメニューウィジェットを使用しようとしています。したがって、その中でトップレベルのメソッドを使用しています。このオプションメニューを実行しようとすると、私はいくつかの問題に遭遇しました。私は現在、コードの何が間違っているのかを理解していないので、誰かが何か問題を教えてくれることを望んでいました。

myGUI =主根

def CoreContent(): 

#Building core content/structure 
    myGUI.withdraw() # This is the main root that I remove after user logs in 
    CoreRoot = Toplevel(myGUI, bg="powderblue") # Toplevel 
    CoreRoot.title("titletest") 
    CoreRoot.geometry('300x500') 
    CoreRoot.resizable(width=False, height=False) 

#Creating drop-down menu 
    menu = Menu(CoreRoot) 
    CoreRoot.config(menu=menu) 
    filemenu = Menu(menu) 
    menu.add_cascade(label="File", menu=filemenu) 
    filemenu.add_command(label="test one", command=lambda: doNothing()) # Problem 
    filemenu.add_command(label="soon") 
    filemenu.add_separator() 
    filemenu.add_command(label="Exit") 

という名前

CoreContent =関数は、私がどこでどのように私はオプションメニューウィジェット内での使用を作るためにコマンドとして追加するために、フレームを作成する必要があり混乱しています。 Tkinterではフレーム間で切り替える方法の明確な説明について

答えて

0

、このリンクをチェック:Switch between two frames in tkinter

メニューからそれを行うには、このような何か書くことができます:

import tkinter as tk 

# method to raise a frame to the top 
def raise_frame(frame): 
    frame.tkraise() 

# Create a root, and add a menu 
root = tk.Tk() 
menu = tk.Menu(root) 
root.config(menu=menu) 
filemenu = tk.Menu(menu) 
menu.add_cascade(label="File", menu=filemenu) 
filemenu.add_command(label="test one", command=lambda: raise_frame(f1)) 
filemenu.add_command(label="test two", command=lambda: raise_frame(f2)) 

# Create two frames on top of each other 
f1 = tk.Frame(root) 
f2 = tk.Frame(root) 
for frame in (f1, f2): 
    frame.grid(row=0, column=0, sticky='news') 

# Add widgets to the frames 
tk.Label(f1, text='FRAME 1').pack() 
tk.Label(f2, text='FRAME 2').pack() 

# Launch the app 
root.mainloop() 
関連する問題