Tkinter,在新窗口中添加菜单选项

时间:2017-06-06 22:08:25

标签: python tkinter

所以我对如何向我的窗口添加菜单选项感到困惑...我显然可以制作一个菜单栏并知道如何在我的代码中看到。然而,我让窗户从一个改变到另一个的方式正在影响事情因为我只有一个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;页面打开时。没有语法再次修改......但是,我没有出现新的菜单栏。

1 个答案:

答案 0 :(得分:0)

你非常接近(问题代码中的所有错误除外......)

但是,假设您可以解决所有错误,那么您唯一缺少的就是实际配置主窗口以使用您已创建的菜单栏。

您需要添加几行来告诉窗口有关菜单栏的信息。您可以通过调用winfo_toplevel()来获取窗口,然后您可以将该窗口小部件配置为具有以下菜单:

def on_show_frame(self, event):
    menubar = tk.Menu(...)
    ...
    top = self.winfo_toplevel()
    top.configure(menu=menubar)