По умолчанию кнопки QPushButton нажимаются, когда нажата клавиша ввода и QDialog находится в фокусе, и этот щелчок вызывает выброс отклоненного или принятого сигнала, который закрывает окно, и это обрабатывается по умолчанию и autoDefault, поэтому первым делом нужно переопределить это поведение.
С другой стороны, нажатие клавиши ввода не приводит к переходу к другому QLineEdit, в этом случае вы должны прослушать эту клавишу и использовать focusNextPrevChild для перемещения фокус.
Наконец, коды, сгенерированные QtDesigner, не должны изменяться, поэтому я предполагаю, что код, который вы показываете, находится в файле gui .py, и я буду реализовывать logi c в основном. ру:
import sys
from PyQt5 import QtCore, QtWidgets
from gui import Ui_Dialog
class Dialog(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.show()
for btn in self.buttonBox.buttons():
btn.setDefault(False)
btn.setAutoDefault(False)
btn.setFocusPolicy(QtCore.Qt.NoFocus)
def keyPressEvent(self, event):
if event.key() in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
self.focusNextPrevChild(True)
super().keyPressEvent(event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Dialog()
w.show()
sys.exit(app.exec_())