我在ui中使用pyQt Designer創建了一個代碼並將其更改爲py代碼。在由pyQT設計器生成的代碼中生成keyPressEvent
現在我想一些按鍵事件添加到我這也就是說,如果我上的數字3的鍵盤鍵點擊,我的標籤應該有文字3就可以了,或者它只是打印「嗨」
我已經檢查在互聯網上的很多論壇,並發現它最好重新實現keyPressEvent來使用鍵盤事件。我試過,但不知何故,我無法使它在由pyQT設計器生成的代碼中工作。
下面是由pyQT設計師生成的代碼。我已經把keyPressEvent的代碼,將其重新實施爲好,但它dosent工作:
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(800, 600)
MainWindow.setFocus()
def keyPressEvent(self, qKeyEvent):
print "hi"
print(qKeyEvent.key())
if qKeyEvent.key() == QtCore.Qt.Key_Return:
print('Enter pressed')
else:
super(Ui_MainWindow).keyPressEvent(qKeyEvent)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.horizontalLayoutWidget = QtGui.QWidget(self.centralwidget)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(40, 10, 721, 80))
self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget"))
self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setMargin(0)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.textEdit = QtGui.QLabel(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(50, 110, 81, 41))
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(130, 260, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.textEdit.setText("I am a label")
self.pushButton.setText(_translate("MainWindow", "PushButton", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我是新來這個論壇,這將是有益的,如果有人可以提供幫助。我知道這可以通過創建另一個繼承QMainWindow的類來實現,但我想在相同的代碼中執行此操作,即在由pyQT Designer生成的代碼塊中。
也請建議如果有任何的方式來做到這一點沒有重新實現keypressEvent
感謝
不,我試着把keyPressEvent放在其他方法之外,但沒有效果。 –
@paarthbatra我已經更新了我的答案。 – Bakuriu
我確實嘗試了你的代碼,但它仍然不起作用,但只顯示空的新行,如果按下輸入,請告訴我我真的很需要它 – haidarvm