埃菲尔上的铁塔梦A 2023-12-30 16:51 采纳率: 0%
浏览 6

entry.insert(END, '出错,如何解决?(相关搜索:python代码|计算器)


from tkinter import *
from functools import partial
from calculate import *
def buju(root):
    label = Label(root, width=36, height=1, bd=5, bg='white', anchor='se', textvariable=label_text)
    label.grid(row=0, columnspan=5)
    entry = Entry(root, width=23, bd=5, bg='white', justify="right", font=('微软雅黑', 12))
    entry.grid(row=1, column=0, columnspan=5, sticky=N + W + S + E, padx=5, pady=5)
    myButton = partial(Button, root, width=5, cursor='hand2', activebackground='#90EE90')
    button_sin = myButton(text='sin', command=lambda: get_input(entry, 'sin('))
    button_arcsin = myButton(text='arcsin', command=lambda: get_input(entry, 'arcsin('))
    button_exp = myButton(text='e', command=lambda: get_input(entry, 'e'))
    button_ln = myButton(text='ln', command=lambda: get_input(entry, 'ln('))
    button_xy = myButton(text='x^y', command=lambda: get_input(entry, '^'))
    button_sin.grid(row=2, column=0)
    button_arcsin.grid(row=2, column=1)
    button_exp.grid(row=2, column=2)
    button_ln.grid(row=2, column=3)
    button_xy.grid(row=2, column=4)
    button_shanyige = myButton(text='←', command=lambda: backspace(entry))
    button_shanquanbu = myButton(text=' C ', command=lambda: clear(entry))
    button_zuokuohao = myButton(text='(', command=lambda: get_input(entry, '('))
    button_youkuohao = myButton(text=')', command=lambda: get_input(entry, ')'))
    button_genhao = myButton(text='√x', command=lambda: get_input(entry, '√('))
    button_shanyige.grid(row=3, column=0)
    button_shanquanbu.grid(row=3, column=1)
    button_zuokuohao.grid(row=3, column=2)
    button_youkuohao.grid(row=3, column=3)
    button_genhao.grid(row=3, column=4)
    button_7 = myButton(text=' 7 ', command=lambda: get_input(entry, '7'))
    button_8 = myButton(text=' 8 ', command=lambda: get_input(entry, '8'))
    button_9 = myButton(text=' 9 ', command=lambda: get_input(entry, '9'))
    button_chu = myButton(text=' / ', command=lambda: get_input(entry, '/'))
    button_yu = myButton(text='%', command=lambda: get_input(entry, '%'))
    button_7.grid(row=4, column=0)
    button_8.grid(row=4, column=1)
    button_9.grid(row=4, column=2)
    button_chu.grid(row=4, column=3)
    button_yu.grid(row=4, column=4)
    button_4 = myButton(text=' 4 ', command=lambda: get_input(entry, '4'))
    button_5 = myButton(text=' 5 ', command=lambda: get_input(entry, '5'))
    button_6 = myButton(text=' 6 ', command=lambda: get_input(entry, '6'))
    button_cheng = myButton(text=' * ', command=lambda: get_input(entry, '*'))
    button_4.grid(row=5, column=0)
    button_5.grid(row=5, column=1)
    button_6.grid(row=5, column=2)
    button_cheng.grid(row=5, column=3)
    button_1 = myButton(text=' 1 ', command=lambda: get_input(entry, '1'))
    button_2 = myButton(text=' 2 ', command=lambda: get_input(entry, '2'))
    button_3 = myButton(text=' 3 ', command=lambda: get_input(entry, '3'))
    button_jian = myButton(text=' - ', command=lambda: get_input(entry, '-'))
    button_dengyu = myButton(text=' \n = \n ', command=lambda: calculator(entry))
    button_1.grid(row=6, column=0)
    button_2.grid(row=6, column=1)
    button_3.grid(row=6, column=2)
    button_jian.grid(row=6, column=3)
    button_dengyu.grid(row=6, column=4, rowspan=2)
    button_pai = myButton(text=' π ', command=lambda: get_input(entry, 'π'))
    button_0 = myButton(text=' 0 ', command=lambda: get_input(entry, '0'))
    button_xiaoshudian = myButton(text=' . ', command=lambda: get_input(entry, '.'))
    button_jia = myButton(text=' + ', command=lambda: get_input(entry, '+'))
    button_pai.grid(row=7, column=0)
    button_0.grid(row=7, column=1)
    button_xiaoshudian.grid(row=7, column=2)
    button_jia.grid(row=7, column=3)
def backspace(entry):
    entry.delete(len(entry.get()) - 1)
def clear(entry):
    entry.delete(0, END)
    label_text.set('')
def get_input(entry, argu):
    formula = entry.get()
    for char in formula:
        if '\u4e00' <= char <= '\u9fa5':
            clear(entry)
    entry.insert(INSERT, argu)
def calculator(entry):
    try:
        formula = entry.get()
        if re.match('-?[\d+,π,e]\.?\d*$', formula):
            label_text.set(''.join(formula + '='))
            return

        result = final_calc(formula_format(formula))
        clear(entry)
        entry.insert(END, result)
        label_text.set(''.join(formula + '='))
    except:
        clear(entry)
        entry.insert(END, '出错')

if __name__ == '__main__':
    root = Tk()
    root.title('作业')
    root.resizable(0, 0)
    global label_text
    label_text = StringVar()
    buju(root)
    root.mainloop()

辛苦各位帮我看看,,这个是用python代码写的计算器,为什么我运行起来一点击等号不会显示计算结果啊,程序有什么问题嘛

  • 写回答

2条回答 默认 最新

  • 虫鸣@蝶舞 2023-12-30 17:10
    关注

    1.首先应该检查下你的calculator函数的正则语句是不是会返回正确的结果,可以在if re.match('-?[\d+,π,e].?\d*$', formula):这句前面使用print(re.match('-?[\d+,π,e].?\d*$', formula))输出看看。
    2.检查final_calc和formula_format是否有问题,也可以用print方法调试
    3.去掉calculator函数中的try和except语句,看看返回有什么错误

    评论

报告相同问题?

问题事件

  • 创建了问题 12月30日

悬赏问题

  • ¥15 天翼云搭建多ip l2tp
  • ¥30 matlab求解刃位错方程
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥20 dify工作流分析sql查询结果
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)
  • ¥15 通过AT指令控制esp8266发送信息
  • ¥15 有哪些AI工具提供可以通过代码上传EXCEL文件的API接口,并反馈分析结果