Hello World:应用实例没有属性“say-yu-hi”

2024-04-19 01:35:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习python(有五天的时间),我在helloworld程序中遇到了一些基本问题。你知道我遗漏了什么吗?在

#!/user/bin/python3

from Tkinter import *

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

        def say_hi(self):
            print "Hello word!"

        self.button = Button (frame, text="QUIT",
            fg="red", command=frame.quit)
        self.button.pack(side=LEFT)

        self.hi = Button (frame, text="Hello",
            command=self.say_hi)
        self.button.pack(side=RIGHT)

root = Tk()
app = App (root)
root.mainloop()

我得到的错误是:

^{pr2}$

不应该def say_hi(self):创建实例吗?提前谢谢。在


Tags: textselfmasterapphellodefbuttonroot
2条回答

您正在__init__的作用域内创建say_hi。所以应该是:

self.hi = Button (frame, text="Hello",
    command=say_hi)

但你可能是说:

^{pr2}$

希望这有帮助!在

您的问题是在__init__()内部定义say_hi()。只需向下移动并取消缩进:

#!/user/bin/python3

from Tkinter import *

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

        self.button = Button (frame, text="QUIT",
            fg="red", command=frame.quit)
        self.button.pack(side=LEFT)

        self.hi = Button (frame, text="Hello",
            command=self.say_hi)
        self.button.pack(side=RIGHT)

    def say_hi(self):
        print "Hello word!"

root = Tk()
app = App (root)
root.mainloop()

实际上,say_hi()只是__init__()中的一个局部变量。如果在__init__()之外定义它,则它是一个方法。在

相关问题 更多 >