from tkinter import *
import random
from math import *
from tkinter import messagebox
from pefile import b
class Application(Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.createWidget()
def createWidget(self):
a = StringVar()
b = StringVar()
c = StringVar()
self.label01 = Label(self, text="二次项系数:").grid(row=0, column=0)
self.entry01 = Entry(self, textvariable=a).grid(row=0, column=1)
self.label02 = Label(self, text="一次项系数:").grid(row=1, column=0)
self.entry02 = Entry(self, textvariable=b).grid(row=1, column=1)
self.label03 = Label(self, text="常数项系数:").grid(row=2, column=0)
self.entry03 = Entry(self, textvariable=c).grid(row=2, column=1)
Button(self, text="计算", command=self.jisuan).grid(row=3, column=1, sticky=EW)
Button(self, text="退出").grid(row=3, column=2, sticky=E)
self.label04 = Label(self, text="请先将方程的右端化为0").grid(row=4, sticky=EW)
def jisuan(self):
aa = self.label01.get()
bb = self.label01.get()
cc = self.label01.get()
print(aa)
d = int((bb)**2-4*(aa)*(cc))
if d < 0:
messagebox.showinfo("计算结果","此二次方程无实数根")
elif d == 0:
outcome = -b/(2*aa)
messagebox.showinfo("计算结果","方程有且仅有一个实数根:%d" % outcome)
elif d > 0:
x1 = (-b + sqrt(d))/(2*aa)
x2 = (-b - sqrt(d))/(2*aa)
messagebox.showinfo("计算结果","方程有两个实数根,分别为:%d和%d" % (x1, x2))
if __name__=='__main__':
root=Tk()
root.geometry("400x300+200+300")
app=Application(master=root)
root.mainloop()
input()

一个Python的GUI为什么出错?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- CSDN专家-HGJ 2021-04-18 18:34关注
改了一下代码,界面运行正常,排除了代码中错误,但是其计算部分你看一下再作调整。
from tkinter import * import random from math import * from tkinter import messagebox #from pefile import b class Application(Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.createWidget() def createWidget(self): a = StringVar() b = StringVar() c = StringVar() self.label01 = Label(self, text="二次项系数:").grid(row=0, column=0) self.entry01 = Entry(self, textvariable=a) self.entry01.grid(row=0, column=1) self.label02 = Label(self, text="一次项系数:").grid(row=1, column=0) self.entry02 = Entry(self, textvariable=b) self.entry02.grid(row=1, column=1) self.label03 = Label(self, text="常数项系数:").grid(row=2, column=0) self.entry03 = Entry(self, textvariable=c) self.entry03.grid(row=2, column=1) Button(self, text="计算", command=self.jisuan).grid( row=3, column=1, sticky=EW) Button(self, text="退出",command=self.quit).grid(row=3, column=2, sticky=E) self.label04 = Label(self, text="请先将方程的右端化为0").grid(row=4, sticky=EW) def jisuan(self): aa = self.entry01.get() bb = self.entry02.get() cc = self.entry03.get() print(aa) d = float((int(bb)**2-4*(int(aa)*int(cc)))) if d < 0: messagebox.showinfo("计算结果", "此二次方程无实数根") elif d == 0: outcome = -b/(2*aa) messagebox.showinfo("计算结果", "方程有且仅有一个实数根:%d" % outcome) elif d > 0: x1 = (-b + sqrt(d))/(2*aa) x2 = (-b - sqrt(d))/(2*aa) messagebox.showinfo("计算结果", "方程有两个实数根,分别为:%d和%d" % (x1, x2)) if __name__ == '__main__': root = Tk() root.geometry("400x300+200+300") app = Application(master=root) root.mainloop()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报