В следующем коде кнопка Ok в диалоговом окне всегда находится в фокусе, поэтому при нажатии кнопки диалог принимается и закрывается. Я стараюсь, чтобы пользователь редактировал текст в строке редактирования, а затем ему разрешалось нажимать клавишу ввода, когда это делается для обработки текста (editFinished signal). Тем не менее, это вызывает кнопку Ok, которая принимает диалог. Есть ли способ отключить это без подкласса диалога?Предотвратите нормально QPushButton от принятия диалогового окна при нажатии на ввод
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
dbutton = QtWidgets.QPushButton("Show Dialog", widget)
dialog = QtWidgets.QDialog(None)
vlay = QtWidgets.QVBoxLayout(dialog)
form = QtWidgets.QFormLayout(None)
vlay.addLayout(form)
form.addRow("Text Input", QtWidgets.QLineEdit())
form.addRow("Float Input", QtWidgets.QSpinBox())
ok = QtWidgets.QPushButton("Ok")
cancel = QtWidgets.QPushButton("Cancel")
hlay = QtWidgets.QHBoxLayout()
hlay.addWidget(ok)
hlay.addWidget(cancel)
vlay.addLayout(hlay)
ok.clicked.connect(dialog.accept)
cancel.clicked.connect(dialog.reject)
dbutton.clicked.connect(dialog.exec_)
widget.show()
app.exec_()
Не могли бы вы объяснить это лучше, пожалуйста – eyllanesc