代码之家  ›  专栏  ›  技术社区  ›  ironmantis7x

卡在Qt设计器中-连接按钮

  •  0
  • ironmantis7x  · 技术社区  · 6 年前

    我正在尝试使用python和Iam创建一个电话拨号器,并使用QT设计器来实现。

    我设计了一个简单的UI,还将.UI文件的代码导出到python代码中(请参见此处的代码: https://pastebin.com/bPYjnU0k ).

    我遇到的问题是,当按下键盘上的按钮时,我不知道如何在QLineEdit中显示“电话号码”。

    def retranslateUi(self, Dialog):
            Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
            self.pushButton_numZero.setText(_translate("Dialog", "0", None))
            self.pushButton_num4.setText(_translate("Dialog", "4", None))
            self.pushButton_num3.setText(_translate("Dialog", "3", None))
            self.pushButton_num5.setText(_translate("Dialog", "5", None))
            self.pushButton_num6.setText(_translate("Dialog", "6", None))
            self.pushButton_num1.setText(_translate("Dialog", "1", None))
            self.pushButton_num9.setText(_translate("Dialog", "9", None))
            self.pushButton_num2.setText(_translate("Dialog", "2", None))
            self.pushButton_num7.setText(_translate("Dialog", "7", None))
            self.pushButton_num8.setText(_translate("Dialog", "8", None))
            self.pushButton_numStar.setText(_translate("Dialog", "*", None))
            self.pushButton_numPound.setText(_translate("Dialog", "#", None))
            self.pushButton_del.setText(_translate("Dialog", "DEL", None))
            self.pushButton_call.setText(_translate("Dialog", "Call", None))
            self.number_display.setPlaceholderText(_translate("Dialog", "Dial Number ...", None))
            self.pushButton_Contacts.setText(_translate("Dialog", "Plp", None))
    
    if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        Dialog = QtGui.QDialog()
        ui = Ui_Dialog()
        ui.setupUi(Dialog)
        Dialog.show()
        sys.exit(app.exec_())
    

    当我按下按钮“拨号”电话号码时,如何将拨号板按钮挂起以显示“电话号码”?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   eyllanesc Yonghwan Shin    6 年前

    the docs 不建议修改Qt Designer生成的文件,因此我将假定该文件名为ui_dialog.py。针对这个问题,您必须连接每个按钮的点击信号,并根据按钮,实现添加或删除文本等逻辑。

    main.py

    from PyQt4 import QtCore, QtGui
    from ui_dialog import Ui_Dialog
    
    class Dialog(QtGui.QDialog, Ui_Dialog):
        def __init__(self, parent=None):
            super(Dialog, self).__init__(parent)
            self.setupUi(self)
    
            buttons = (
                self.pushButton_num1, self.pushButton_num2, self.pushButton_num3, 
                self.pushButton_num4, self.pushButton_num5, self.pushButton_num6, 
                self.pushButton_num7, self.pushButton_num8, self.pushButton_num9,
                self.pushButton_numStar, self.pushButton_numZero, self.pushButton_numPound,
                self.pushButton_call, self.pushButton_del, self.pushButton_Contacts)
            for btn in buttons:
                btn.clicked.connect(self.on_clicked)
    
        @QtCore.pyqtSlot()
        def on_clicked(self):
            current_text = self.number_display.text()
            t = self.sender().text()
            if t in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "#"):
                self.number_display.setText(current_text + t)
            elif t == "DEL":
                self.number_display.setText(current_text[:-1])
            elif t == "Call":
                print("Call to: "+ current_text)
            elif t == "Plp":
                print("Plp")
    
    if __name__ == '__main__':
        import sys
        app = QtGui.QApplication(sys.argv)
        w = Dialog()
        w.show()
        sys.exit(app.exec_())