【问题标题】:Python programm doesn't start (Tkinter)Python 程序无法启动(Tkinter)
【发布时间】: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 后立即获得值 rl,因此 rl 都是空的。您应该 get einfach 方法中的那些值。
  • 您的代码在此处引发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 尚未分配。

标签: python tkinter


【解决方案1】:

你的代码有几个问题。

您编写while 语句的方式与您期望的方式不同。

声明:

while '+' or '-' in l:

并不意味着当+-l 中时,然后做某事。相反,这意味着当+ 为True 或-l 中时,然后做一些事情。因为+ 始终为 True,所以这个 while 语句将始终处于活动状态。

你应该写的是:

while '+' in l or '-' in l:

这类似于:+l 中或-l 中然后做一些事情。

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

这是一篇您可能会觉得有用的帖子How can I solve equations in Python?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2013-03-30
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多