Python 禁用QWizardPage上的默认焦点';单击“下一步”按钮,并让自定义QPushButton由';输入';相反

Python 禁用QWizardPage上的默认焦点';单击“下一步”按钮,并让自定义QPushButton由';输入';相反,python,python-3.x,pyqt,pyqt5,qwizardpage,Python,Python 3.x,Pyqt,Pyqt5,Qwizardpage,我正在开发一个QWizardPage,用户可以在其中搜索要安装的软件包。因此,我提供了一个搜索按钮(一个QPushButton)和一个QLineEdit(作为搜索按钮的buddy()) 我的问题是,向导的“下一步”按钮始终具有焦点。但是对于这个特定的页面,我希望QLineEdit在默认情况下具有焦点,而return或enter会触发搜索按钮 我已经在QLineEdit上尝试了setDefault(True)和setFocus()。我仔细阅读了文档,但在PyQt5中找不到访问QWizardPage

我正在开发一个
QWizardPage
,用户可以在其中搜索要安装的软件包。因此,我提供了一个搜索按钮(一个
QPushButton
)和一个
QLineEdit
(作为搜索按钮的
buddy()

我的问题是,向导的“下一步”按钮始终具有焦点。但是对于这个特定的页面,我希望
QLineEdit
在默认情况下具有焦点,而return或enter会触发搜索按钮

我已经在
QLineEdit
上尝试了
setDefault(True)
setFocus()。我仔细阅读了文档,但在PyQt5中找不到访问
QWizardPage
的下一步按钮的方法。我想可能有类似于
autofocus(False)
的东西可以在特定的向导页面上禁用它

如何在
QWizardPage
中设置对
QLineEdit
的关注,并让return或enter触发自定义
QPushButton


要复制的代码:

#-*-编码:utf-8-*-
从PyQt5.QtGui导入QIcon、QStandardItemModel、QStandardItem
从PyQt5.QtCore导入Qt、pyqtSignal、pyqtSlot、QObject、QTimer、QThread
从PyQt5.qtwidts导入(QApplication、QProgressBar、QGridLayout、QLabel、,
QFileDialog、QHBoxLayout、QVBoxLayout、QDialog、,
QWizard、QWizardPage、QToolButton、QComboBox、,
QCheckBox、QLineEdit、QGroupBox、QTableView、,
QBStractItemView、QFrame、QPushButton)
# ...
#]===========================================================================[#
#]巫师[#=================================================================[#
#]===========================================================================[#
类VenvWizard(QWizard):
"""
用于创建和设置虚拟环境的向导。
"""
定义初始化(自):
super()。\uuuu init\uuuuu()
self.setWindowTitle(“Venv向导”)
自我调整大小(635480)
自行移动(528153)
自选表格(
"""
QToolTip{
背景色:rgb(47,52,63);
边界:rgb(47、52、63);
颜色:rgb(210210210);
填充:2px;
不透明度:325
}
QTableView{
网格线颜色:rgb(230230230)
}
QTableView::item{
选择背景色:rgb(120、120、130);
选择颜色:rgb(255、255、255)
}
"""
)
self.addPage(InstallPackages())
self.addPage(Summary())
# ...
类InstallPackages(QWizardPage):
"""
通过'pip'将软件包安装到创建的虚拟环境中。
"""
定义初始化(自):
super()。\uuuu init\uuuuu()
self.setTitle(“安装软件包”)
self.setSubTitle(
“指定要安装到中的软件包”
“虚拟环境。右键单击要创建的项目”
“将其标记为安装,准备好后单击“下一步”。”
)
#]===================================================================[#
#]页面内容[#===================================================[#
#]===================================================================[#
verticalLayout=QVBoxLayout()
gridLayout=QGridLayout(自身)
pkgNameLabel=QLabel(“包名:”)
self.pkgNameLineEdit=QLineEdit()
pkgNameLabel.setBuddy(self.pkgNameLineEdit)
self.searchButton=QPushButton(
“&搜索”,
#单击=self.list\u包
)
resultsTable=QTableView(
selectionBehavior=QAbstractItemView.SelectRows,
editTriggers=QAbstractItemView.NoEditTriggers,
AlternatingRowColor=True
)
#调整垂直收割台
v_Header=resultsTable.verticalHeader()
v_收割台设置默认截面尺寸(27.5)
v_Header.hide()
#调整(水平)收割台
h_Header=resultsTable.horizontalHeader()
h_标题设置默认对齐(Qt.AlignLeft)
h_头。设置默认截面尺寸(150)
h_标题。setStretchLastSection(真)
#设置表视图模型
self.resultsModel=QStandardItemModel(0,2,self)
self.resultsModel.setHorizontalHeaderLabels(
[“名称”、“版本”、“说明”]
)
resultsTable.setModel(self.resultsModel)
addWidget(pkgNameLabel,0,0,1,1)
addWidget(self.pkgNameLineEdit,0,1,1,1)
addWidget(self.searchButton,0,2,1,1)
addWidget(resultsTable,1,0,1,3)
verticalLayout.addLayout(gridLayout)
# ...
课程摘要(第页):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.setTitle(“摘要”)
自我设置子标题(………………)
"...........................")
#]===================================================================[#
#TODO:创建摘要页面
#]===================================================================[#
def初始化页面(自我):
通过
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=QApplication(sys.argv)
wiz=VenvWizard()
wiz.show()
sys.exit(app.exec_())

显示按钮后,您必须立即更改按钮的默认属性,在这种情况下,您可以使用QWizardPage的方法:

#。。。
类InstallPackages(QWizardPage):
# ...
def初始化页面(自我):
下一个按钮=self.wizard().button(QWizard.NextButton)
QTimer.singleShot(0,lambda:next_按钮。设置默认值(False))
单发定量(0,l)