3

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 ファイルを実行すると、ファイル ダイアログが常にメニューの前に表示され、それを閉じてメニュー [開く] からアクセスしようとしても、何も起こらないことです。ここで何が間違っていましたか?助けてください、事前に感謝します。

4

1 に答える 1

2

コマンドはメソッドの名前を与える必要があります。あなたがやっていることは、メソッドを呼び出すことです。Tkinter は、そのメソッドの戻り値をボタン コマンドとして使用します。解決策: ブラケットを省略します。

..., command=file.open

それ以外の

..., command=file.open()

しかし、あなたは終了ボタンのためにそれを正しくしました!

于 2012-06-02T17:29:45.447 に答える