【发布时间】:2017-07-26 08:34:13
【问题描述】:
我的程序应该解决方程。我只是添加了区分+和-的部分。这些方程式非常简单。 (如 2x = 4+2 或 4x = 1-4)这是我的代码:
from tkinter import *
import time
form = Tk()
form.title('Hello')
auff = Label(form, text='Put in Equation!')
rein = Entry(form)
lein = Entry(form)
istg = Label (form, text='=')
stop = Button(form, text='Stop', command=form.destroy)
start = Button (form, text='Compute')
erge = Label (form, text='')
r = rein.get()
l = lein.get()
def operation (event):
if ('+' or '-' in l):
if '+' in l:
l1,l2 = l.split ('+')
if ('x' not in l1 or l2):
ll = l1 + l2
return ll
if '-' in l:
l1,l2 = l.split ('-')
if ('x' not in l1 or l2):
ll = l1 - l2
return ll
if ('+' or '-' in r):
if '+' in r:
r1,r2 = r.split ('+')
if ('x' not in r1 or r2):
rr = r1 + r2
return rr
if '-' in r:
r1,r2 = r.split ('-')
if ('x' not in r1 or r2):
rr = r1 - r2
return rr
def einfach (event):
r = rein.get()
l = lein.get()
x = 'x'
if x in l:
operation (event)
lr = int(lr)
end = rr/lr
end = int (end)
erge['text']= 'x = {}'.format(end)
elif x in r:
operation (event)
rl = int(rl)
end = ll/rl
end = int(end)
erge['text']='x = {}' .format(end)
start.bind('<Button-1>', einfach)
auff.grid(row = 0, column = 1)
rein.grid(row = 1, column = 2)
istg.grid(row = 1, column = 1)
lein.grid(row = 1, column = 0)
erge.grid(row = 4, column = 1)
start.grid(row = 2, column = 1)
starts.grid(row = 3, column = 1)
erkl1.grid(row = 5, column = 1)
erkl2.grid(row = 6, column = 1)
erkl3.grid(row = 7, column = 1)
erkl4.grid(row = 8, column = 1)
stop.grid(row = 9, column = 1)
start.mainloop()
我可能会添加错误:没有错误消息,但是当您按下计算时,它不会执行任何操作。
提前致谢,
香蕉
【问题讨论】:
-
这段代码有很多个问题。您应该一点一点地编写代码并进行测试,而不是全部编写并尝试运行。
-
作为一个起点,首先要解决的是:您在启动 GUI 后立即获得值
r和l,因此r和l都是空的。您应该geteinfach方法中的那些值。 -
您的代码在此处引发
NameError。 -
另外,
while '+' or '-' in l:与while ('+') or ('-' in l)相同,因此它并没有按照您的想法进行操作。与if 'x' not in l1 or l2:相同,与if ('x' not in l1) or (l2)相同。 -
感谢您的建议,但我仍有问题!但现在我想我发现了另一个错误!将 r/l 拆分为 bc 时存在问题,因为它们不是字符串!我已经尝试过 str (l/r) 但它说 l/r 尚未分配。