大家好!我结合面向对象编程和tkinter写了一个解一元二次方程的程序。现在的错误是,在windows中最后得到的变量在被引入jiee方法中时一直出现'_tkinter.tkapp' object has no attribute 'i'的错误,由于是自学,时间也不是很长,始终找不到解决办法。希望有人可以帮忙解决一下,另外,我还想在其中加入一键清除和如果输入的内容不是数字时出现报错弹窗的功能,也恳请各位解答,感激不尽!
下面是我的代码:
from tkinter import *
import tkinter as tk
from tkinter import messagebox
class jie():
def __init__(self,name):
self.name=name
def windows(self):
#创建标签
Label(self.name,text='二次系数:').place(x=10,y=10,width=50,height=30)
Label(self.name,text='一次系数:').place(x=210,y=10,width=50,height=30)
Label(self.name,text='常系数:').place(x=410,y=10,width=50,height=30)
#创建输入文本框
l=StringVar()
k=StringVar()
n=StringVar()
d=Entry(self.name,textvariable=l)
d.place(x=80,y=10,width=50,height=30)
e=Entry(self.name,textvariable=k)
e.place(x=280,y=10,width=50,height=30)
f=Entry(self.name,textvariable=n)
f.place(x=480,y=10,width=50,height=30)
self.i=d.get()
self.j=e.get()
self.k=f.get()
#创建输出文本框
txt=Text(self.name)
txt.place(x=10,y=100,width=580,height=320)
txt.insert(0.0,'计算结果为:')
#创建按钮
Button(self.name,text='计算',command=jie.jiee(self.name)).place(x=210,y=50,width=120,height=30)
def jiee(self):
a=self.i
b=self.j
c=self.k
m=b**2-4*a*c
if m>=0:
x1=(-b+m**(1/2))/2*a
x2=(-b-m**(1/2))/2*a
self.name.txt.insert(12.0,x1)
self.name.txt.insert(15.0,x2)
else:
self.name.txt.insert('该方程无解')
def start():
#创建窗口并确定窗口位置与大小
win=tk.Tk()
#定义窗口宽度和高度
win.title('一元二次函数的解')
win.geometry('600x300')
k=jie(win)
print(k)
k.windows()
#设置循环
win.mainloop()
start()