如何在python中使用tkinter创建menuBar

时间:2019-03-24 15:40:03

标签: python-3.x tkinter tkinter-menu

我真的希望你理解以下问题,因为我不确定如何问这个问题,所以希望你能帮助我,即使现在不让我来

我想编写一个程序来练习我的python编程技能。我想制作一个商店程序,员工可以在其中输入带有价格的商品,并在其中出售商品。我要使一个“页面”是输入的项目,另一个“页面”是销售页面。为此,我想创建一个菜单栏,员工可以按输入按钮进入输入项目页面,但是当他想出售项目时,他按出售按钮,然后进入销售页面,但是只是屏幕改变,而不是有另一个标签/窗口。

我真的希望我能很好地解释我的问题

提前谢谢!

1 个答案:

答案 0 :(得分:0)

根据您对问题的评论,看来您的主要问题是您不知道如何制作菜单栏,所以我将解决问题的这一部分。

每个顶级窗口(实例TkToplevel)都有一个menu属性,可以将其设置为Menu对象的实例。该菜单本身可以具有下拉菜单,而该组合就是菜单栏的组成部分。

为了完成这项工作,您必须首先创建菜单,然后将该菜单与窗口关联。

import tkinter as tk

root = tk.Tk()
self.menubar = tk.Menu()
root.configure(menu=self.menubar)

要创建子菜单,您必须执行非常相似的操作。首先,创建一个新的Menu实例,然后使用add_cascade将其与菜单栏关联。通常,菜单将是菜单栏的子级。您可以使用add_command方法将项​​目添加到子菜单。

在您的情况下,您可能需要创建一个“视图”菜单,其中包含用于在“输入”和“出售”之间切换的项目。看起来像这样:

viewMenu = tk.Menu(self.menubar)
self.menubar.add_cascade(label="View", menu=viewMenu)
viewMenu.add_command(label="Input", command=self.switch_to_input)
viewMenu.add_command(label="Sell", command=self.switch_to_sell)

示例

这是一个完整的工作示例。为了简单起见,它实际上不会切换页面。相反,它只是在标签中显示“页面”。

import tkinter as tk

class MenuExample:

    def __init__(self):
        self.root = tk.Tk()

        self.label = tk.Label(self.root, width=25)
        self.label.pack(side="top", fill="both", expand=True, padx=20, pady=20)

        self._create_menubar()

    def _create_menubar(self):
        # create the menubar
        self.menubar = tk.Menu(self.root)
        self.root.configure(menu=self.menubar)

        # File menu
        fileMenu = tk.Menu(self.menubar)
        self.menubar.add_cascade(label="File", menu=fileMenu)
        fileMenu.add_command(label="Exit", command=self.root.destroy)

        # View menu
        viewMenu = tk.Menu(self.menubar)
        self.menubar.add_cascade(label="View", menu=viewMenu)
        viewMenu.add_command(label="Input", command=self.switch_to_input)
        viewMenu.add_command(label="Sell", command=self.switch_to_sell)

    def switch_to_input(self):
        # put the code to switch to the input page here...
        self.label.configure(text="you clicked on View->Input")

    def switch_to_sell(self):
        # put the code to switch to the sell page here...
        self.label.configure(text="you clicked on View->Sell")

app = MenuExample()
tk.mainloop()