python - 如何在QLCD数字屏上显示多个数字?

标签 python python-3.x pyqt5 calculator qlcdnumber

我正在尝试使用 Qt Designer 进行简单计算器,但无法在 QLCDNumber 上显示多个数字。 例如,当我单击一次pushButton_1时,屏幕上显示(1),没问题,但我第二次单击时不显示(11)。当我使用LineEdit而不是QLCDNumber时,我可以使用“插入”方法(如 self.lineEdit.insert(value)),可以显示多个数字。我们可以在 QLCDNumber 中使用类似的方法吗?

我们可以在QLCDNumber中使用类似的方法吗?

示例代码:

    self.pushButton_0.clicked.connect(lambda: self.display_screen("0"))
    self.pushButton_1.clicked.connect(lambda: self.display_screen("1"))
    self.pushButton_2.clicked.connect(lambda: self.display_screen("2"))
    self.pushButton_3.clicked.connect(lambda: self.display_screen("3"))
    self.pushButton_4.clicked.connect(lambda: self.display_screen("4"))
    self.pushButton_5.clicked.connect(lambda: self.display_screen("5"))
    self.pushButton_6.clicked.connect(lambda: self.display_screen("6"))
    self.pushButton_7.clicked.connect(lambda: self.display_screen("7"))
    self.pushButton_8.clicked.connect(lambda: self.display_screen("8"))
    self.pushButton_9.clicked.connect(lambda: self.display_screen("9"))
    self.pushButton_dot.clicked.connect(lambda: self.display_screen("."))
    self.pushButton_00.clicked.connect(lambda: self.display_screen("00"))
    self.pushButton_add.clicked.connect(lambda: self.display_screen("+"))
    self.pushButton_minus.clicked.connect(lambda: self.display_screen("-"))
    self.pushButton_multiply.clicked.connect(lambda: self.display_screen("*"))
    self.pushButton_divide.clicked.connect(lambda: self.display_screen("/"))
    #self.pushButton_equal.clicked.connect(lambda: self.display_screen("="))
    self.pushButton_equal.clicked.connect(lambda:self.calculation)

    self.pushButton_sil.clicked.connect(self.lineEdit.backspace)
    self.pushButton_clear.clicked.connect(self.lineEdit.clear)

def display_screen(self,value):
    self.lineEdit.insert(value)

最佳答案

一个可能的解决方案是创建一个变量,通过实现您想要的操作来构建字符串:

from PyQt5 import QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.text = ""

        self.lcd_number = QtWidgets.QLCDNumber()

        button_1 = QtWidgets.QPushButton("1", clicked=lambda: self._handle_clicked("1"))
        button_2 = QtWidgets.QPushButton("2", clicked=lambda: self._handle_clicked("2"))
        button_3 = QtWidgets.QPushButton("3", clicked=lambda: self._handle_clicked("3"))
        button_4 = QtWidgets.QPushButton("4", clicked=lambda: self._handle_clicked("4"))

        lay = QtWidgets.QGridLayout(self)
        lay.addWidget(button_1, 0, 0)
        lay.addWidget(button_2, 0, 1)
        lay.addWidget(button_3, 0, 2)
        lay.addWidget(button_4, 0, 3)
        lay.addWidget(self.lcd_number)

    def _handle_clicked(self, s):
        self.text += s
        self.lcd_number.display(self.text)


if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

关于python - 如何在QLCD数字屏上显示多个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62592945/

相关文章:

python - PyQt 消息框崩溃

python - 使用 urllib2 打开的 URL 是否可以限制返回的行数?

python - 为什么 List 不能包含多种类型?

python - 最有效的 Django 查询返回跨多个表的结果

Python sqlite3 - 按星期几列对表进行排序

python - 取消 QFileDialog 时如何停止子窗口关闭

python - 将图像从 C++ 传递到 Python 3.4

python - 在绘图表上绘制数据框的更好方法

Python tkinter,而不是事件错误

python - 从 tableView 模型打印单击行的数据