gpt4 book ai didi

python - 禁用下一个按钮的回车键 pyqt5 QWizard

转载 作者:行者123 更新时间:2023-12-01 01:47:23 27 4
gpt4 key购买 nike

我正在QWizard中制作一个向导

我有QLineEditQPushButton

# Enter token
self.enter_token_box = QLineEdit()
# Enter token button
self.btn = QPushButton('OK')
# connect button to function, checks the token..
self.btn.clicked.connect(self._EnterToken)

我已经输入了这一行,它接受回车键并运行与单击“确定”按钮相同的功能。

# Enter key press connection
self.enter_token_box.returnPressed.connect(self._EnterToken)

问题是它会同时触发向导的OK按钮和Next按钮。

MVCE:

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


class Wizard(QWizard):
def __init__(self, parent=None):
super(Wizard, self).__init__(parent)

self.addPage(EnterToken(self))
self.addPage(ProcessData(self))

class EnterToken(QWizardPage):
def __init__(self, parent=None):
super(EnterToken, self).__init__(parent)

self.setTitle("Enter your token here")
self.setSubTitle(" ")

# Enter Token Widgets
self.label = QLabel()
self.enter_token_box = QLineEdit()

self.btn = QPushButton('OK')

# layout options
layout = QVBoxLayout()
layout.addWidget(self.label)
self.label.setText("Enter Your 12 Digit Code.")
layout.addWidget(self.enter_token_box)
layout.addWidget(self.btn)

# Enter Key TRigger
self.enter_token_box.returnPressed.connect(self._EnterToken)

self.btn.clicked.connect(self._EnterToken)

self.setLayout(layout)


def _EnterToken(self):
""" Method for processing user input after the button is pressed"""

QMessageBox.about(self, "I want only this!!", "I want only you and not the next page!!")


class ProcessData(QWizardPage):
""" Sensor Code Entry """
def __init__(self, parent=None):
super(ProcessData, self).__init__(parent)

# num of logs combo box
self.num_logs_combo = QComboBox(self)

# ~buttons
self.btn = QPushButton('OK')

layout = QVBoxLayout()
layout.addWidget(self.num_logs_combo)
layout.addWidget(self.btn)
self.setLayout(layout)

if __name__ == '__main__':
app = QApplication(sys.argv)
wizard = Wizard()
wizard.show()
sys.exit(app.exec_())

如果您运行上面的代码并单击确定,您将保留在该页面上。如果您选择了 QLineEdit 框以外的任何内容,也会发生同样的情况。

如果您在 QLineEdit 框中按 Enter,您将进入下一页并显示消息框。

如何阻止Enter Key链接到Next按钮。

如何访问和覆盖 QWizard 中的 BACKNEXTFINISH 按钮的属性?

最佳答案

要访问按钮,您必须使用 button()方法并传递QWizard::WizardButton ,在您的情况下,您必须禁用 default QPushButton 的。

class Wizard(QWizard):
def __init__(self, parent=None):
super(Wizard, self).__init__(parent)

self.addPage(EnterToken(self))
self.addPage(ProcessData(self))

def showEvent(self, event):
self.button(QWizard.NextButton).setDefault(False)
super(Wizard, self).showEvent(event)

更新:

class Wizard(QWizard):
def __init__(self, parent=None):
super(Wizard, self).__init__(parent)

self.addPage(EnterToken(self))
self.addPage(ProcessData(self))

self.buttons = [self.button(t) for t in (QWizard.NextButton, QWizard.FinishButton)]

for btn in self.buttons:
btn.installEventFilter(self)

def eventFilter(self, obj, event):
if obj in self.buttons and event.type() == QEvent.Show:
obj.setDefault(False)
return super(Wizard, self).eventFilter(obj, event)

关于python - 禁用下一个按钮的回车键 pyqt5 QWizard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com