"实例没有属性按钮"访问__init__中定义的变量时

时间:2016-09-08 14:58:59

标签: python python-2.7 tkinter

我是tkinter的新手,似乎无法绕过oop,我认为这就是问题所在。

这是我的代码:

from Tkinter import *
from PIL import ImageTk, Image

images = {
    "first" : "miog.png",
    "combat" : "mio kicking ass.jpg"
    }

class App:

    def __init__(self, master, image_dict):
        frame = Frame(master)
        frame.pack()

        self.pic = ImageTk.PhotoImage(Image.open(image_dict["first"]))
        self.image = Label(frame, image = self.pic)
        self.image.pack(side = TOP)

        self.button = Button(frame, text="Start", command=self.combat())
        self.button.pack(side = RIGHT)

    def combat(self):
        self.button.destroy()

window = Tk()
window.title("aaa")

app = App(window, images)

window.mainloop()

我从控制台得到的错误是:

AttributeError: App instance has no attribute 'button'

我没有得到它,初始化实例时没有按钮(在 init 中)?

我发现类似问题的每个其他答案都与缩进有关,但我确保仔细检查所有内容(所有标签以及我认为它们应该在哪里)。

1 个答案:

答案 0 :(得分:0)

您需要将 callable 传递给按钮实例,而不是结果。

self.button = Button(frame, text="Start", command=self.combat)

否则你立即调用它,所以在实际定义按钮之前执行它。