所以我很困惑如何將菜單選項添加到我的窗口中......我清楚地可以製作菜單欄,並知道如何做到這一點,就像您可以在我的代碼中看到的一樣。然而,我從一個窗口改變到另一個窗口的方式會影響事物,因爲我只有1個Tk.tk窗口。該程序的其餘部分在該窗口內運行。我希望能夠更改每個窗口的標題和菜單。Tkinter,在新窗口中添加菜單選項
class start(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
tk.Tk.title(self, "Group Registration")
menubar = tk.Menu(container)
tk.Tk.config(self, menu=menubar)
fileMenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=fileMenu)
fileMenu.add_command(label="Exit", command=quit)
for F in (begin, admin_main, members):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(begin)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
frame.event_generate("<<showframe>>")
class begin(tk.Frame):
pass
class admin_main(tk.Frame):
def __init__(self, parent, controller):
self.bind("<<showframe>>", self.on_show_frame)
def on_show_frame(self, event):
menubar = Menu(self)
fileMenu = Menu(menubar)
menubar.add_cascade(label="File", menu=fileMenu)
fileMenu.add_command(label="Create member list")#command=)
fileMenu.add_command(label="Load member list")#command=)
fileMenu.add_command(label="Email")#command=)
fileMenu.add_separator()
fileMenu.add_command(label="Exit")
print"ok"
class members(tk.Frame):
pass
app = start()
app.geometry("600x400")
app.mainloop()
這些類是我的新窗口。這只是短版本的代碼,以顯示窗口如何操作...
(修訂版) 解釋器將打印頁面打開時「確定」。沒有修改過的語法,但是,我沒有新的菜單欄顯示。
你看了下面的內容嗎? https://stackoverflow.com/questions/35029188/how-would-i-make-a-method-which-is-run-every-time-a-frame-is-shown-in-tkinter –
我現在有大聲笑...我沒有使用event_generate之前,但從我在谷歌上閱讀我可以做的事情,如或類似的東西。我不明白如何使用它來添加到我的菜單。我會在event_generate()中添加代碼,或者像示例所示那樣綁定它,並在def on_show_frame()中添加代碼。 –
ricky6991
您不要將事件添加到菜單中。你使用even來調用一個創建菜單的函數。您在上面的代碼中使用菜單的方式,只有在頁面出現時調用的函數中執行該菜單,而不是在創建頁面的代碼中執行。 –