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
相关产品推荐
相关产品推荐

