如何实现pow(x)和sqrt(x)?

时间:2019-12-30 22:56:43

标签: python user-interface tkinter calculator math.sqrt

我尝试寻找类似的答案,但未找到任何答案。这样吧。

我目前的任务是使用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并将它们连接到按钮。我尝试使用相同的“ press”功能,但使用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 = ""

我真的很喜欢一些建议。谢谢! GUI

1 个答案:

答案 0 :(得分: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)