Python程序不';t起动(Tkinter)

Python程序不';t起动(Tkinter),python,tkinter,Python,Tkinter,我的程序应该是解方程的。我刚刚添加了区分+和-。这些方程非常简单。(比如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

我的程序应该是解方程的。我刚刚添加了区分+和-。这些方程非常简单。(比如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()
从tkinter导入*
导入时间
form=Tk()
form.title('Hello')
auff=Label(form,text='Put-in-equality!')
rein=条目(表格)
lein=条目(表格)
istg=标签(形式,文本='='=')
停止=按钮(表单,text='stop',command=form.destroy)
开始=按钮(表单,text='Compute')
erge=标签(形式,文本=“”)
r=rein.get()
l=lein.get()
def操作(事件):
如果(“+”或“-”在l中):
如果l中有“+”:
l1,l2=l.split(“+”)
如果('x'不在l1或l2中):
ll=l1+l2
返回ll
如果l中有“-”:
l1,l2=l.split('-')
如果('x'不在l1或l2中):
ll=l1-l2
返回ll
如果('+'或'-'在r中):
如果r中的“+”:
r1,r2=r.split(+)
如果('x'不在r1或r2中):
rr=r1+r2
返回rr
如果r中的“-”为:
r1,r2=r.split('-')
如果('x'不在r1或r2中):
rr=r1-r2
返回rr
def einfach(事件):
r=rein.get()
l=lein.get()
x='x'
如果x在l中:
操作(事件)
lr=int(lr)
结束=右后/左后
end=int(end)
erge['text']='x={}'。格式(结束)
r中的elif x:
操作(事件)
rl=int(rl)
结束=ll/rl
end=int(end)
erge['text']='x={}'。格式(结束)
start.bind(“”,einfach)
辅助网格(行=0,列=1)
钢筋网(行=1,列=2)
istg.grid(行=1,列=1)
lein.grid(行=1,列=0)
能量网格(行=4,列=1)
start.grid(行=2,列=1)
starts.grid(行=3,列=1)
erkl1.网格(行=5,列=1)
erkl2.网格(行=6,列=1)
erkl3.网格(行=7,列=1)
erkl4.网格(行=8,列=1)
stop.grid(行=9,列=1)
start.mainloop()
我可能会添加错误:没有错误消息,但当您按compute时,它不会执行任何操作

提前感谢,


香蕉

您的代码有几个问题

您在编写
语句时使用的方法与您期望的方法不一样

声明:

而在l:

这并不意味着当
+
-
l
中时,就做些什么。相反,它意味着当
+
为真或
-
l
中时,然后做点什么。因为
+
总是为真,所以while语句将始终处于活动状态

你应该写的是:

当l中的“+”或l中的“-”时:

这大致是这样的:当
+
l
中时,或者当
-
l
中时,然后做点什么

您可能想看看与解决x相关的一些堆栈溢出帖子


下面是一篇你可能会觉得有用的帖子

这段代码中有很多问题。您应该一点一点地编写代码,然后测试,而不是全部编写并尝试运行。不过,首先要解决的问题是:您在启动GUI后立即获得值
r
l
,因此
r
l
都是空的。您应该
获取
einfach
方法中的那些值。您的代码在此处引发
NameError
。此外,
while在l:
中的“+”或“-”与
while(“+”)或(“-”在l)
相同,因此它没有做您认为它在做的事情。与
相同,如果'x'不在l1或l2中:
这与
如果'x'不在l1中)或(l2)
相同。谢谢你的建议,但我仍然有一个问题!但现在我想我发现了另一个错误!将r/l放入拆分bc时出现问题,因为它们不是字符串!我已经试过str(l/r),但它说l/r还没有分配。