我的Tkinter菜单有问题。这是我的gui.py文件的代码:
from tkinter import *
from SS2 import file
class AppUI(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, relief=SUNKEN, bd=2)
self.menubar = Menu(self)
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="File", menu=menu)
menu.add_command(label="Open", command=file.open())
menu.add_command(label="Save")
menu.add_command(label="Save as...")
menu.add_command(label="Exit",
command=root.quit)
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="Image", menu=menu)
menu.add_command(label="Size")
menu.add_command(label="Rotate")
menu.add_command(label="Crop")
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="Color", menu=menu)
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="Filter", menu=menu)
menu.add_command(label="Blur")
menu.add_command(label="Contour")
menu.add_command(label="Emboss")
menu.add_command(label="Smooth")
menu.add_command(label="Sharpen")
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="Help", menu=menu)
menu.add_command(label="About")
try:
self.master.config(menu=self.menubar)
except AttributeError:
# master is a toplevel window (Python 1.4/Tkinter 1.63)
self.master.tk.call(master, "config", "-menu", self.menubar)
self.canvas = Canvas(self, bg="white", width=400, height=400,
bd=0, highlightthickness=0)
self.canvas.pack()
root = Tk()
app = AppUI(root)
app.pack()
root.mainloop()
这是我的file.py:
的代码from tkinter import *
from tkinter.filedialog import askopenfilename
def open():
filename = askopenfilename(filetypes=[("allfiles","*"),("imagesfiles","*.png")])
问题是,当我运行gui.py文件时,文件对话框总是出现在菜单之前,当我关闭它并尝试通过菜单Open访问它时,没有任何反应。我在这做错了什么?请提前帮助和谢谢。
答案 0 :(得分:2)
命令应该给出方法的名称。你正在做的是调用方法。然后,Tkinter将使用该方法的返回值作为按钮命令。解决方案:省略括号。
..., command=file.open
而不是
..., command=file.open()
你做了正确的退出按钮!