[英]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.