【问题标题】:Tkinter trying simple math using GUITkinter 使用 GUI 尝试简单的数学运算
【发布时间】:2013-09-20 00:47:09
【问题描述】:

尝试用python和tkinter制作一个非常基本的加法计算器。它给了我一个错误:

    btresult = Button(window, text = "Compute Sum", command = self.result).grid(row = 4, column = 2, sticky = E)
           ^
SyntaxError: invalid syntax

我无法弄清楚如何连接它。

from tkinter import *

class addCalculator:
    def __init__(self):
        window = Tk()
        window.title("Add Calculator")

        Label(window, text = "First Number: ").grid(row = 1, column = 1, sticky = W)
        Label(window, text = "Second Number: ").grid(row = 2, column = 1, sticky = W)

        self.number1Var = StringVar()
        Entry(window, textvariable = self.number1Var, justify = RIGHT).grid(row = 1, column = 2)

        self.number2Var = StringVar()
        Entry(window, textvariable = self.number2Var, justify = RIGHT).grid(row = 2, column = 2)

        self.resultVar = StringVar()
        lblresult = Label(window, textvariable = self.result.grid(row = 3, column = 2, sticky = E)

        btresult = Button(window, text = "Compute Sum", command = self.result).grid(row = 4, column = 2, sticky = E)

        def result(self):
            resultVar = self.resultVar.set(eval(self.number1Var.get()) + eval(self.number2Var.get()))
            return resultVar

        window.mainloop()

addCalculator()

【问题讨论】:

  • 是的,所以它仍然不起作用。结果没有打印到屏幕上。我尝试了几种不同的 tuts,但是当我为这个简单的练习修改它们时,我无法打印任何结果。我的函数或被调用的变量有问题。我想。
  • 创建 addCalculator 类的实例(例如,myinstance = addCalculator(). Unindent your result` 函数。将 window.mainloop() 放入函数中,然后使用实例调用该函数

标签: python user-interface tkinter


【解决方案1】:

在上一行 (lblresult = ...) 中,您忘记关闭打开的括号。 Python 将这一行(该行和下一行 btresult = ...)解释为一整行代码,但显然这不适用于您的代码,因此 SyntaxError

【讨论】:

  • 好答案。通常,每当您在不可能无效的行上获得 SyntaxError 时,请检查上面是否有任何未闭合的括号、括号、大括号、三引号等。
  • 所以在清理了一下之后,我仍然看不到结果标签(字段),并且它没有被结果填充。
  • @ohvonbraun 我对 Tkinter 没有经验,所以我无法帮助你。还有其他错误吗?
  • @ohvonbraun 您发布的代码有很多问题和错误,并且即使在修复了关闭括号问题后也无法运行。如果您已经对其进行了足够的清理以使其运行,但您仍有问题,请发布您更新的代码。我可以为你清理它,但是你和我将使用不同的代码,这将很难帮助你。
【解决方案2】:

我以自己的方式解决了这个问题。我试图忠实于原始问题,但代码需要大量清理。有很多小问题需要解决,但我认为主要问题是将整数传递给函数的方法。我还将原来的 lblresult 从标签更改为 Entry 小部件。我仍然是 Python 的新手,但正在变得更好。我在寻找类似答案时发现了这个问题,解决这个问题也解决了我的问题。谢谢!代码如下:

from Tkinter import *

class addCalculator:
    def __init__(self):
        window = Tk()
        window.title("Add Calculator")

        def result(z1,z2):
            biz=z1+z2
            lblresult.delete(0,END)
            lblresult.insert(0,biz)
            return

        Label1 = Label(window, text = "First Number: ").grid(row = 1, column = 1, sticky = W)
        Label2 = Label(window, text = "Second Number: ").grid(row = 2, column = 1, sticky = W)

        self.number1Var = IntVar()
        Entry1 = Entry(window, textvariable = self.number1Var, justify = RIGHT).grid(row = 1, column = 2)

        self.number2Var = IntVar()
        Entry2 = Entry(window, textvariable = self.number2Var, justify = RIGHT).grid(row = 2, column = 2)

        Label3 = Label(window, text = "Result: ").grid(row = 3, column = 1, sticky = W)

        lblresult = Entry(window, justify = RIGHT)
        lblresult.grid(row = 3, column = 2, sticky = E)

        btresult = Button(window,text="Compute Sum",command=lambda:result(self.number1Var.get(),self.number2Var.get()))
        btresult.grid(row = 4, column = 2, sticky = E)

        window.mainloop()

addCalculator()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多