【发布时间】:2017-07-07 12:07:46
【问题描述】:
在下面的代码中,对话框的 Ok 按钮似乎总是成为焦点,因此当按下 enter 时,对话框被接受并关闭。我的目标是让用户在行编辑中编辑文本,然后在完成处理文本时允许按 Enter 键(editingFinished 信号)。但是,这会触发 Ok 按钮接受对话框。有没有办法在不继承对话框的情况下禁用它?
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_()
【问题讨论】:
-
请您解释一下好吗
标签: python pyqt pyqt5 qpushbutton qdialog