python为什么没有菜单栏_Python Tkinter菜单栏不显示

在OS X 10.5环境下,使用Python 2.7和Tk 8.4创建Tkinter GUI时遇到菜单栏不显示的问题。通过提供一段有效的代码示例,解释了如何正确创建和配置Tkinter菜单栏,包括添加'File'和'Quit'命令,确保菜单栏正常显示。问题可能源于在小部件方法中未正确管理菜单栏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在尝试使用Tkinter创建一个GUI,并开始实现一个菜单栏.我看了几个教程并为它编写了一些代码,但似乎从未出现过菜单栏 – 只是一个带有白色背景的空白框架.这不仅仅发生在我的代码中;在将上述教程之一的代码复制并粘贴到新脚本中时,表现出相同的行为.

如果有人能够解释造成这种情况的原因,我会很感激.我的系统是OS X 10.5,Python 2.7,Tk 8.4.这是教程中看起来不起作用的代码:

#!/usr/local/bin/python2.7

from Tkinter import *

from ttk import *

class App(Frame):

def __init__(self):

Frame.__init__(self)

self.master.geometry('400x300')

self.master.title(__file__)

self.pack()

self.menu = Menu(tearoff=False)

self.master.config(menu = self.menu)

fm = self.file_menu = None

fm = Menu(self.menu, tearoff=False)

self.menu.add_cascade(label='File', menu = fm)

fm.add_command(label='Say Hello', command = self.say_hello)

fm.add_separator()

fm.add_command(label='Quit', command = self.quit)

self.mainloop()

def say_hello(self, *e):

self.label = Label(self.master, text='Hello there!')

self.label.pack(anchor=CENTER, fill=NONE, expand=YES, side=LEFT)

if __name__ == '__main__':

App()

我的代码在这里:

from Tkinter import *

class App(Frame):

def __init__(self, parent):

Frame.__init__(self, parent)

parent.title("Cluedo Solver 1.0")

menubar = Menu(root)

menubar.add_command(label="File")

menubar.add_command(label="Quit", command=root.quit())

root.config(menu=menubar)

root=Tk()

root.geometry("300x250+300+300")

app=App(root)

root.mainloop()

带解释的代码

从个人经验来看,我发现在小部件方法中管理所有小部件通常更容易.这就是我在这里所做的,它起作用了.而且,我使用了master,而不是父母.我现在将逐步指导您完成代码.

from Tkinter import *

我们导入Tkinter(GUI的东西)

class App(Frame):

我们创建了一个名为App的类,它是保存小部件的框架.

def __init__(self, master):

Frame.__init__(self, master)

self.grid()

self.widgets()

我们创建了一个名为__init__的方法.这会初始化类,并运行另一个名为widgets的方法.

def widgets(self):

menubar = Menu(root)

menubar.add_command(label="File")

menubar.add_command(label="Quit", command=root.quit())

root.config(menu=menubar)

我们创建了小部件方法.这是添加了小部件,菜单栏的地方.如果我们要创建更多的小部件,他们也会在这里.

root=Tk()

root.title("Menubar")

app=App(root)

root.mainloop()

最后,我们给整个窗口一些属性.我们给它一个标题,菜单栏,然后​​运行App类.最后,我们使用root.mainloop启动GUI的mainloop.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值