Python Tkinter菜单栏不显示
发布时间:2020-12-20 12:40:35 所属栏目:Python 来源:网络整理
导读:我正在尝试使用Tkinter创建一个GUI,并开始实现一个菜单栏.我看了几个教程并为它编写了一些代码,但似乎从未出现过菜单栏 – 只是一个带有白色背景的空白框架.这不仅仅发生在我的代码中;在将上述教程之一的代码复制并粘贴到新脚本中时,表现出相同的行为. 如果
我正在尝试使用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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |