簡體   English   中英

Python Tkinter 編輯菜單窗口

[英]Python Tkinter Edit Menu Window

我正在嘗試編輯Menu window 我怎樣才能編輯它?

這是針對 Windows 的。

from tkinter import *

Window = Tk()

MB = Menu(Window)
Window.config(menu=MB)

Menubar = Menu(MB)
MB.add_cascade(label="File", menu=Menubar)
Menubar.add_command(label="New File")

#Btn1 = Button(Menubar, width=20, text="Button").pack() #I failed.

Window.mainloop()

我試過Btn1 = Button(Menubar, width=20, text="Button").pack()但是這個不行。

通常您會像這樣將項目添加到菜單中 - 但是要尋找什么?

window = Tk()
mb = Menu(window)  
menu_bar = Menu(mb, tearoff=0)  
menu_bar.add_command(label="New")  
menu_bar.add_command(label="Open")  
menu_bar.add_command(label="Save")  
menu_bar.add_command(label="Save as...")  
menu_bar.add_command(label="Close")  

menu_bar.add_separator()  

menu_bar.add_command(label="Exit", command=window.quit)  

mb.add_cascade(label="File", menu=menu_bar)

top.config(menu=mb)

您不能向菜單添加任意小部件。 要將項目添加到菜單,您必須使用 Menu 對象上可用的以下功能之一:

  • add
  • add_command
  • add_cascade
  • add_checkbutton
  • add_radiobutton
  • add_separator

要添加文本標簽,您可以使用add_command並將command屬性設置為None

所有這些都在菜單小部件定義本身以及幾乎任何包含小部件文檔的站點上都有記錄。

如果您正在尋找帶有按鈕的菜單欄控件,您可以做到。 所有代碼都將在 Python3 中的同一個 file.py .Libraries 中(對於 Python 2 更改為將 Tkinter 導入為 tk)。 稍后您可以使用帶有按鈕的每個菜單重定向到每個窗口。

import tkinter as tk
from tkinter import ttk

全球標題列表

nombre_ventanas={'PageOne'}

一個菜單欄,您需要為要顯示的每個菜單添加類似的內容。 menubar_global, menubar1, menubar2, ...

def menubar_global(self, root, controller):

    menubar_global = tk.Menu(root)

    page_1 = tk.Menu(menubar_global, tearoff=0)

    # With Submenu for page_1

    page_1_1=tk.Menu(page_1 , tearoff=0)
    page_1_2=tk.Menu(page_1 , tearoff=0)

主要的

if __name__ == "__main__":
    app = ControlWindow()
    app.mainloop()

窗口控制類

class ControlWindow(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 = {}

        self._nombre_ventanas = nombre_ventanas

        for F in self._nombre_ventanas:

            F = eval(F)
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        # First window
        self.show_frame(Login)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

        # Title for each page
        self.title(titulo_ventanas[cont._name_for_menu_bar])

        # Here you can add if-sentece for each menubar that you want 
        if cont._name_for_menu_bar != "PageOne":

            # Menu bar
            print("show_frame", cont)
            menubar = frame.menubar(self)
            self.configure(menu=menubar)

        else:
            menubar = 0
            self.configure(menu=menubar)

class Ventana_proveedores(tk.Frame):

    _name_for_menu_bar = "Ventana_proveedores"

    _config = configuracion

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        self.controller = controller

        tk.Button(self, text='Regresar', font=FONT_LABELFRAME,
                command=lambda: controller.show_frame(Ventana_gerente)).grid(row=0, column=0)

    def menubar(self, root):
        return menubar_global(self, root, self.controller)

以后每個Page都需要有這個配置

class PageOne(tk.Frame):

    _name_for_menu_bar = "PageOne"


    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        self.controller = controller

    def menubar(self, root):
        return menubar_global(self, root, self.controller)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM