卡在 Qt Designer 中 - 连接按钮
Stuck in Qt Designer - hooking up buttons
我正在尝试使用 python 创建一个 phone 拨号器,我正在使用 QT Designer 来完成它。
我已经布置了一个简单的 UI 并且我还将 .ui 文件的代码导出到 python 代码(参见此处的代码:https://pastebin.com/bPYjnU0k
).
我遇到的问题是,当按下键盘上的按钮时,我不知道如何让 "phone number" 显示在 QLineEdit 中。
这是我的代码片段,显示了按钮对话框(同样:上面 link 中 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_())
当我按下 "dial" phone 号码的按钮时,如何连接拨号盘按钮以显示 "phone number"?
谢谢。
正如 PyQt 在 the docs 中指出的那样,不建议修改 Qt Designer 生成的文件,因此我假设此文件名为 ui_dialog.py。正题,必须连接每个按钮的clicked信号,根据按钮,实现增删文本等逻辑
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_())
我正在尝试使用 python 创建一个 phone 拨号器,我正在使用 QT Designer 来完成它。
我已经布置了一个简单的 UI 并且我还将 .ui 文件的代码导出到 python 代码(参见此处的代码:https://pastebin.com/bPYjnU0k ).
我遇到的问题是,当按下键盘上的按钮时,我不知道如何让 "phone number" 显示在 QLineEdit 中。 这是我的代码片段,显示了按钮对话框(同样:上面 link 中 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_())
当我按下 "dial" phone 号码的按钮时,如何连接拨号盘按钮以显示 "phone number"?
谢谢。
正如 PyQt 在 the docs 中指出的那样,不建议修改 Qt Designer 生成的文件,因此我假设此文件名为 ui_dialog.py。正题,必须连接每个按钮的clicked信号,根据按钮,实现增删文本等逻辑
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_())