Как я могу создать панель меню, используя tkinter в Python - PullRequest
0 голосов
/ 24 марта 2019

Я действительно надеюсь, что вы понимаете следующий вопрос, потому что я не знал, как задать этот вопрос, поэтому я надеюсь, что вы можете помочь мне, если не дадите мне сейчас

Я хочу сделать программу дляпрактиковать мой навык программирования на питоне.Я хочу создать магазинную программу, в которой сотрудник мог бы вводить товары с указанием цены и где он мог бы продавать товары.Я хочу сделать так, чтобы одна «страница» была предметом ввода, а другая «страница» - страницей продажи.Чтобы я хотел создать строку меню, в которой сотрудник мог бы нажать, скажем, кнопку ввода и перейти на страницу ввода предметов, но когда он хочет продать предметы, он нажимает кнопку продажи, а затем он переходит на страницу продажи, номеняется только экран, а не то, что появляется другая вкладка / окно.

Я действительно надеюсь, что объяснил свою проблему достаточно хорошо

Заранее спасибо !!

1 Ответ

0 голосов
/ 25 марта 2019

Судя по вашим комментариям к вопросу, ваша главная проблема в том, что вы не знаете, как сделать менубар, поэтому я рассмотрю эту часть вопроса.

Каждое окно верхнего уровня (экземпляры Tk и Toplevel) имеют атрибут 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()
...