-1

我试图寻找类似的答案,但没有找到任何东西。所以这里。

我目前的任务是使用 tkinter 工具在 Python 中创建一个带有 GUI 的简单计算器。

当我在实现 pow(x) 和 sqrt(x) 并让它们正常工作时遇到一些问题时,我几乎完成了。

这是我用于操作数按钮的功能:

def press(num):
   global expression
   expression = expression + str(num)
   equation.set(expression)

这适用于所有简单的东西,如“+”:

plus = Button(gui, text=' + ', fg='orange', bg='white', command=lambda: press("+"), height=1, width=7)

但是现在我仍然需要通过从数学导入来添加 pow 和 sqrt 并将它们连接到按钮。我尝试使用相同的“按下”功能,但使用 sqrt 我得到一个 ValueError。

powx = Button(gui, text=' pow(x) ', fg='orange', bg='white', command=lambda: press("pow("), height=1, width=7)
powx.grid(row=4, column=4)
sqrt = Button(gui, text=' sqrt(x) ', fg='orange', bg='white', command=lambda: press("sqrt("), height=1, width=7)
sqrt.grid(row=5, column=4)

sqrt 错误代码: TypeError:“按钮”对象不可调用

等于:

def equalpress():
    try:
        global expression
        total = str(eval(expression))
        equation.set(total)
        expression = ""

    except ZeroDivisionError: 
        equation.set(" Cant divide through Zero! ")
        expression = ""

    except SyntaxError: 
        equation.set(" SyntaxError! ")
        expression = ""

我真的很感激一些建议。谢谢! 图形用户界面

4

1 回答 1

2

问题是您在执行以下操作时要替换内置sqrt()函数:

sqrt = Button(gui, text=' sqrt(x) ', fg='orange', bg='white', command=lambda: press("sqrt("), height=1, width=7)
sqrt.grid(row=5, column=4)

现在名称sqrt指的是您的按钮,而不是功能。更改变量名称,就像您为pow按钮所做的那样。

sqrtx = Button(gui, text=' sqrt(x) ', fg='orange', bg='white', command=lambda: press("sqrt("), height=1, width=7)
sqrtx.grid(row=5, column=4)
于 2019-12-30T23:07:52.220 回答