Python 属性错误:';应用程序';对象没有属性';创建小部件';
我的代码有点问题。我必须做一个推销员,但我有一个错误,我不知道我哪里有错误。上面说Python 属性错误:';应用程序';对象没有属性';创建小部件';,python,python-3.x,Python,Python 3.x,我的代码有点问题。我必须做一个推销员,但我有一个错误,我不知道我哪里有错误。上面说 "AttributeError: 'Application' object has no attribute 'create_widgets'. 如果你能帮我解决这个问题,我将不胜感激 import tkinter as tk class Application(tk.Frame): def __init__(self, master = None): super().__init_
"AttributeError: 'Application' object has no attribute 'create_widgets'.
如果你能帮我解决这个问题,我将不胜感激
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.pack()
self.create_widgets()
#create the app
app = Application()
app.master.frame()
app.master.title("Sumator")
app.master.minsize(width=100, height=50)
#start the program
app.mainloop()
def create_widgets(self):
#create widgets
self.firstNumberEntry = tk.Entry()
self.plusSign = tk.Label(text = "+")
self.secondNumberEntry = tk.Entry()
self.equalSign = tk.Label(text = "=")
self.resultLabel = tk.Label(text = "Result...", bg = "green", fg = "white")
self.calculateButton = tk.Button(text = "Calculate", command = self.calculate)
#place widgets
self.firstNumberEntry.pack(side = "left")
self.plusSign.pack(side = "left")
self.secondNumberEntry.pack(side = "left")
self.equalSign.pack(side = "left")
self.resultLabel.pack(side = "left")
self.calculateButton.pack(side = "left")
def calculate(self):
try:
first_value = float(self.firstNumberEntry.get())
second_value = float(self.secondNumberEntry.get())
result = first_value + second_value
self.resultLabel.config(text = str(result), bg = "green", fg = "white")
except ValueError:
self.resultLabel.config(text="No number/s", bg="red", fg="black")```
您的方法
create\u widgets
和calculate
实际上不在您的类中,它们应该像\uuuuuuu init\uuuuuu
那样缩进,如下所示
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.pack()
self.create_widgets()
def create_widgets(self):
#...
def calculate(self):
#...
#create the app
app = Application()
app.master.frame()
app.master.title("Sumator")
app.master.minsize(width=100, height=50)
#start the program
app.mainloop()
您需要将
calculate(self)
函数和create_widgets(self)
函数缩进应用程序
类中。这样,python就知道它们是类的一部分
我还对你的程序做了一些改进,比如让它看起来更好
以下是最终代码:
将tkinter作为tk导入
类应用程序(tk.Frame):
def uuu init uuu(self,master=None):
超级()。\uuuu初始化\uuuuu(主)
self.pack()
self.create_widgets()
def创建_小部件(自):
#创建小部件
self.firstnumberntry=tk.Entry(bd=0)
self.plusSign=tk.Label(text=“+”)
self.secondnumberntry=tk.Entry(bd=0)
self.equalSign=tk.Label(text=“=”)
self.resultLabel=tk.Label(text=“Result…”,bg=“green”,fg=“white”)
self.calculateButton=tk.Button(text=“Calculate”,command=self.Calculate,bd=0,relief=“flat”)
self.calculateButton.config(activebackground=self.calculateButton.master.cget(“bg”))
#放置小部件
self.firstNumberEntry.pack(side=“left”)
自加符号包(side=“left”)
self.secondnumber.pack(side=“left”)
自平衡信号包(side=“left”)
self.resultLabel.pack(side=“left”)
self.calculateButton.pack(side=“left”)
def计算(自我):
尝试:
first\u value=float(self.firstNumberEntry.get())
second\u value=float(self.secondNumberEntry.get())
结果=第一个值+第二个值
self.resultLabel.config(text=str(result),bg=“绿色”,fg=“白色”)
除值错误外:
self.resultLabel.config(text=“No number/s”,bg=“red”,fg=“black”)
#创建应用程序
app=应用程序()
app.master.frame()
附录主标题(“Sumator”)
app.master.minsize(宽=100,高=50)
#启动程序
app.mainloop()
希望这对你有帮助 方法
create\u widgets
和calculate
都在类中,它们应该像\uuuuu init\uuuuuu
一样缩进,主代码应该在类之外