Застрял в Qt Designer - подключение кнопок - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь создать номеронабиратель телефона, используя Python и Iam, используя QT Designer, чтобы сделать это.

Я выложил простой пользовательский интерфейс и также экспортировал код файла .ui в код Python(см. код здесь: https://pastebin.com/bPYjnU0k).

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как получить «номер телефона» для отображения в QLineEdit при нажатии кнопок на клавиатуре,Вот фрагмент кода моего кода, показывающий диалоги кнопок (опять же: полный код на pastebin по ссылке выше):

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 Ответ

0 голосов
/ 18 ноября 2018

Как указывает PyQt в документах , не рекомендуется изменять файл, сгенерированный 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_())
...