【发布时间】:2020-09-17 16:51:10
【问题描述】:
如何正确编写事件函数,通过按回车键从一个 QLineEdit 传递到另一个 QLineEdit?
我知道该怎么做:
工作示例
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QFormLayout
from PyQt5.QtCore import Qt, QEvent
class working(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.show()
self.x = QLineEdit(self)
self.x1 = QLineEdit(self)
layout = QFormLayout(self)
layout.addRow("x:", self.x)
layout.addRow("x1:", self.x1)
def event(self, event):
if event.type() == QEvent.KeyPress:
if event.key() in (Qt.Key_Return, Qt.Key_Enter):
self.focusNextPrevChild(True)
return super().event(event)
def main():
app = QApplication(sys.argv)
ex = working()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
现在我想了解如何对这段代码做同样的事情(我认为问题出在 super() 和 init 但我不知道为什么)。
UNWorking 基本示例
from PyQt5 import QtCore, QtWidgets, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(193, 119)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.x = QtWidgets.QLineEdit()
self.verticalLayout_2.addWidget(self.x)
self.x1 = QtWidgets.QLineEdit()
self.verticalLayout_2.addWidget(self.x1)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "0"))
def event(self, event):
if event.type() == QEvent.KeyPress:
if event.key() in (Qt.Key_Return, Qt.Key_Enter):
self.focusNextPrevChild(True)
return super().event(event)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
【问题讨论】:
-
你为什么要用“那个”代码来做这个?是不是因为您想使用 Designer 构建应用程序而不是手动创建整个界面?
-
主要用于学习,在第二个逻辑中,我可以在不关闭整个应用程序的情况下执行 MainWindow.Close()。我是初学者,我不明白如何正确使用 init super() 和 parent
标签: python user-interface pyqt5