2017-05-05 43 views
0

我試圖創建一個數量的幀通過使用菜單控件的訪問。當使用菜單,您可以點擊其中一個命令 - 它會彈出一個框,菜單控件應該還是在頂部,因此您可以輕鬆地決定去哪裏。的Python,Tkinter的OptionMenu部件及利用它

我試圖做一個這是一個登錄頁面後調用函數中使用選項菜單控件的,所以我使用的是其中的頂級方法。當試圖做這個選項菜單我遇到了一些問題,目前我卡以及不理解什麼是錯的代碼,所以我希望有人能告訴我什麼是錯的。

CoreContent =功能命名

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") 

我很困惑如何以及在哪裏我應該創建添加爲命令,利用選項菜單控件中的幀。

回答

0

有關如何在Tkinter的幀之間進行切換,檢查此鏈接的清晰描述: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() 
相關問題