次のコードでは、ダイアログの[OK]ボタンが常にフォーカスされているように見えるので、enterを押すとダイアログが受け入れられて閉じます。私が目指しているのは、ユーザが行編集でテキストを編集してから、テキストを処理するために完了したらEnterを押すことができるようにすることです(editingFinishedシグナル)。ただし、このボタンをクリックするとダイアログが表示されます。ダイアログをサブクラス化せずにこれを無効にする方法はありますか?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