You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQT5简易计算器点击计算按钮后程序持续崩溃问题求助

问题原因

你的程序崩溃的核心是参数类型不匹配:

  • eval()执行合法数学表达式后返回的是int/float类型的数值结果
  • 而QLineEdit.setText()方法只接受字符串类型的入参,直接传入数值会触发类型错误,导致程序崩溃
修复方案

把eval()的执行结果强制转为字符串即可,还可以额外增加异常捕获逻辑,避免用户输入非法表达式时程序再次崩溃:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(960, 540, 400, 75)
        self.setWindowTitle('Calculation')

        self.btn = QPushButton('->', self)
        self.btn.resize(50, 50)
        self.btn.move(175, 15)
        self.btn.clicked.connect(self.click)

        self.text1 = QLineEdit(self)
        self.text1.move(25, 27)
        self.text2 = QLineEdit(self)
        self.text2.move(240, 27)

    def click(self):
        try:
            # 计算结果转字符串后再传入setText
            res = str(eval(self.text1.text()))
            self.text2.setText(res)
        except:
            # 输入非法时提示错误
            self.text2.setText("表达式错误")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec())
额外提示

eval()方法可以执行任意代码,如果你要把这个程序分享给其他人使用,建议替换为更安全的表达式解析方案,避免恶意代码执行风险。

内容的提问来源于stack exchange,提问作者NBond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:48:04