1

でウィザードを作成していますQWizard

私は持ってい QLineEditます QPushButton

# 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)

エンターキーの押下を受け入れ、「OK」ボタンをクリックするのと同じ機能を実行するこの行を入れました。

# 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_())

上記のコードを実行して をクリックokすると、ページにとどまります。QLineEditボックス以外を選択した場合も同様です。

ボックス内QLineEditで を押すEnterと、次のページに移動し、メッセージ ボックスが表示されます。

ボタンEnter Keyにリンクされないようにするにはどうすればよいですか。Next

BACKの、NEXTおよびFINISHボタンの属性にアクセスしてオーバーライドするにはどうすればよいQWizardですか?

4

1 に答える 1