所以我对如何向我的窗口添加菜单选项感到困惑...我显然可以制作一个菜单栏并知道如何在我的代码中看到。然而,我让窗户从一个改变到另一个的方式正在影响事情因为我只有一个Tk.tk窗口。程序的其余部分在该窗口内运行。我希望能够更改每个窗口的标题和菜单。
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()
这些课程是我的新窗口。这只是代码的简短版本,用于显示Windows的操作方式......
(修订本) 口译员将打印&#34; ok&#34;页面打开时。没有语法再次修改......但是,我没有出现新的菜单栏。
答案 0 :(得分:0)
你非常接近(问题代码中的所有错误除外......)
但是,假设您可以解决所有错误,那么您唯一缺少的就是实际配置主窗口以使用您已创建的菜单栏。
您需要添加几行来告诉窗口有关菜单栏的信息。您可以通过调用winfo_toplevel()
来获取窗口,然后您可以将该窗口小部件配置为具有以下菜单:
def on_show_frame(self, event):
menubar = tk.Menu(...)
...
top = self.winfo_toplevel()
top.configure(menu=menubar)