问题描述
from tkinter import *
root=Tk()
class menu_w:
def nothing(self):
pass
def __init__(self,root):
self.menubar= Menu(root)
root.config(menu=self.menubar)
self.filemenu= Menu(root,tearoff=0)
self.filemenu.add_command(label="New",command=self.nothing)
self.filemenu.add_command(label="open",command=self.nothing)
self.filemenu.add_command(label="save",command=self.nothing)
self.filemenu.add_command(label="save as",command=self.nothing)
self.menubar.add_cascade(label=File,menu=self.filemenu)
k=menu_w(root)
root.mainloop()
解决方法
您忘记在self.menubar.add_cascade
中定义两个对象,尤其是File
和脚本下面的方法filemenu
会起作用。
from tkinter import Tk,Menu
class menu_w:
def __init__(self,root):
self.menubar = Menu(root)
root.config(menu=self.menubar)
self.filemenu = Menu(root,tearoff=0)
self.filemenu.add_command(label="New",command=self.nothing)
self.filemenu.add_command(label="open",command=self.nothing)
self.filemenu.add_command(label="save",command=self.nothing)
self.filemenu.add_command(label="save as",command=self.nothing)
self.menubar.add_cascade(label="File",menu=self.filemenu)
def nothing(self):
pass
def filemenu(self):
pass
def main():
root = Tk()
k = menu_w(root)
root.mainloop()
if __name__ == '__main__':
main()
一些建议:
- 请勿使用通配符导入,而是
from tkinter import *
进行from tkinter import Tk,Menu
- 使用
if __name__ == '__main__':
构造 - 将
root = Tk()
带到main
函数