Tkinter 菜单未出现在 MacOS 11.2.2 上
Tkinter menu is not appearing on MacOS 11.2.2
我正在尝试创建一个应用程序来显示电气系统研究中的实时数据。该菜单将用于打开“首页”上显示的每个图表的历史信息,并且还将包括一个退出选项。当我创建菜单并向其中添加几个项目时,当我 运行 应用程序时它没有显示。不幸的是,在我的搜索中,我尝试过的所有替代方案也没有出现。
from tkinter import *
from tkinter import ttk
class PicoGridInterfacing(Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.grid()
menubar = Menu(root)
menu = Menu(menubar)
menubar.add_cascade(label="Menu", menu=menu)
menu.add_command(label="History", command=None)
menu.add_command(label="Quit", command=root.quit)
batteryData = Frame(root)
batteryData.grid(row=1, column=0)
Label(batteryData, text="Hello!").grid()
root = Tk()
root.title("Electric Power Systems Lab Pico Grid Interfacing")
app = PicoGridInterfacing(master=root)
root.mainloop()
这是我看到的输出的屏幕截图:
Screenshot of output
任何帮助将不胜感激,谢谢!
您需要将菜单栏附加到根 window。
所以这样做:root.config(menu=menubar)
试试这个:
from tkinter import *
from tkinter import ttk
class PicoGridInterfacing(Frame):
def __init__(self, master=None):
super().__init__(master)
# master = master # `super().__init__(master)` already does that so its useless
# Creating the menu
menubar = Menu(root)
menu = Menu(menubar, tearoff=False)
menubar.add_cascade(label="Menu", menu=menu)
menu.add_command(label="History", command=None)
menu.add_command(label="Quit", command=root.destroy)
# Tell the `Tk()` that there is a menu that it need to display:
master.config(menu=menubar)
batteryData = Frame(self)
batteryData.grid(row=1, column=0)
Label(batteryData, text="Hello!").grid()
root = Tk()
root.title("Electric Power Systems Lab Pico Grid Interfacing")
app = PicoGridInterfacing(master=root)
# When you inherit from `Frame` you always what the user to call `.grid`
app.grid()
root.mainloop()
你需要告诉 tkinter.Tk()
有一个菜单,否则它会忽略它。此外,当从 tkinter.Frame
继承时,调用者的工作是调用 .grid
(这是惯例)。
我正在尝试创建一个应用程序来显示电气系统研究中的实时数据。该菜单将用于打开“首页”上显示的每个图表的历史信息,并且还将包括一个退出选项。当我创建菜单并向其中添加几个项目时,当我 运行 应用程序时它没有显示。不幸的是,在我的搜索中,我尝试过的所有替代方案也没有出现。
from tkinter import *
from tkinter import ttk
class PicoGridInterfacing(Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.grid()
menubar = Menu(root)
menu = Menu(menubar)
menubar.add_cascade(label="Menu", menu=menu)
menu.add_command(label="History", command=None)
menu.add_command(label="Quit", command=root.quit)
batteryData = Frame(root)
batteryData.grid(row=1, column=0)
Label(batteryData, text="Hello!").grid()
root = Tk()
root.title("Electric Power Systems Lab Pico Grid Interfacing")
app = PicoGridInterfacing(master=root)
root.mainloop()
这是我看到的输出的屏幕截图: Screenshot of output
任何帮助将不胜感激,谢谢!
您需要将菜单栏附加到根 window。
所以这样做:root.config(menu=menubar)
试试这个:
from tkinter import *
from tkinter import ttk
class PicoGridInterfacing(Frame):
def __init__(self, master=None):
super().__init__(master)
# master = master # `super().__init__(master)` already does that so its useless
# Creating the menu
menubar = Menu(root)
menu = Menu(menubar, tearoff=False)
menubar.add_cascade(label="Menu", menu=menu)
menu.add_command(label="History", command=None)
menu.add_command(label="Quit", command=root.destroy)
# Tell the `Tk()` that there is a menu that it need to display:
master.config(menu=menubar)
batteryData = Frame(self)
batteryData.grid(row=1, column=0)
Label(batteryData, text="Hello!").grid()
root = Tk()
root.title("Electric Power Systems Lab Pico Grid Interfacing")
app = PicoGridInterfacing(master=root)
# When you inherit from `Frame` you always what the user to call `.grid`
app.grid()
root.mainloop()
你需要告诉 tkinter.Tk()
有一个菜单,否则它会忽略它。此外,当从 tkinter.Frame
继承时,调用者的工作是调用 .grid
(这是惯例)。