带有参数,类和tkinter的Python noob

时间:2017-08-19 08:51:24

标签: python class tkinter

谢谢你的聆听......抱歉我的英语不好。 我有一个简单的python脚本的问题,我不知道如何粉碎我的头。

这就是代码。很简单也没用(我正在学习python,但我的编程技巧很难实现)。

import tkinter as tk

class hello:
    button_state = [0,0,0,0,0,0,0,0,0]
    def __init__(self):
        self.root = tk.Tk()
        self.button = tk.Button(self.root, text=self.button_state[0], 
                                           command=self.check(0))
        self.button.pack()
    def check(self,x):
        if x == 0:
            self.button_state[x] = 1
            self.button.config(text=self.button_state[x])

app = hello()
app.root.mainloop()

和错误:

AttributeError: 'hello' object has no attribute 'button'

我不知道为什么如果我使用标签问题不存在。我尝试尝试,我认为错误是在按钮命令中的参数调用?

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您在 init 中使用command = self.check(0)。在check()中使用self.button.config。但是对象中没有这个属性(self.button)。也许,这段代码可以帮到你。另外在你好你使用类属性button_state - 你必须理解这一点:见https://docs.python.org/2/tutorial/classes.html(#错误地使用类变量)

import Tkinter as tk

class hello:
    button_state = [0,0,0,0,0,0,0,0,0]
    def __init__(self):
        self.root = tk.Tk()        
        self.button = tk.Button(self.root, text=self.button_state[0], command=self.check(0))
        self.button.config(text=self.button_state[0])
        self.button.pack()

    def check(self,x):
        if x == 0:
            self.button_state[x] = 1

app = hello()
app.root.mainloop()