PyQt5
を使用してlicense wizardのチュートリアルに従っており、非線形ウィザードを作成する方法を学習しています。しかし、私は問題に固執しているようです。コンテンツの変更に基づいて、QWizardPageからFinishを動的に追加/削除します
QComboBox
のページがあります。ここで選択された項目は、コンボボックスを含む現在のQWizardPage
が最終ページかどうかを判断します。ここで
ページは、これまで含まれているものです:
class CalibrationPageSource(QWizardPage):
def __init__(self, parent):
super(CalibrationPageSource, self).__init__(parent)
self.setTitle('Calibration Wizard')
self.setSubTitle('Select the source for the calibration')
layout = QVBoxLayout()
label = QLabel('''
<ul>
<li><b>From calibration file</b>: browse and select an existing YAML calibration file that contains the camera matrix and distortion coefficients (for example from a previous calibration)</li>
<li><b>From image files</b>: browse and select one or more image files with the calibration pattern visible inside each</li>
<li><b>From stream</b> - if the calibration node is connected to an active <b><i>Device node</i></b> you can use its image stream to interactively calibrate your device</li>
</ul>
''')
label.setWordWrap(True)
layout.addWidget(label)
layout_sources = QHBoxLayout()
label_sources = QLabel('Source:')
self.selection_sources = QComboBox()
self.selection_sources.addItem('Calibration file')
self.selection_sources.addItem('Image files')
self.selection_sources.addItem('Stream')
self.selection_sources.currentIndexChanged['QString'].connect(self.source_changed)
self.selection_sources.setCurrentIndex(1)
layout_sources.addWidget(label_sources)
layout_sources.addWidget(self.selection_sources)
layout.addLayout(layout_sources)
self.setLayout(layout)
@pyqtSlot(str)
def source_changed(self, source):
if source == 'Calibration file':
self.setFinalPage(True)
# TODO Add file dialog
else:
self.setFinalPage(False)
# TODO Remove file dialog (if present)
たび私は、ページが最終作りで、ウィザードの残りの部分を省略したいと思いますCalibration file
からself.selection_sources
の現在の項目が変更されます。この場合、Next
ボタンを削除します。それ以外の場合は(現在は2つしかありません:Image files
とStream
)、ウィザードを正常に動作させて、最終ページにしないようにします。
私は、カスタムisComplete(...)
を実装しようとしているが、問題はCalibration file
が選択されている場合、それはNext
とFinish
の両方を無効にしていることです。私は無効なNext
ボタン(それを完全に隠すのではなく)を持って生きることができますが、無効のFinish
は私の場合は基本的に意味をなさない。私は実際にはNext
ボタンがあることに驚いています。最後のページに達したときに完全に離れていないのでしょうか?
どのようにこの問題を解決するためのアイデアですか?私はQWizardPage
の項目を反復し、手動でNext
ボタンを無効にしたり隠したりすることを考えましたが、これを行うための簡単ですぐ使える方法があることを願っています。現在の状態ではFinish
の動的挿入が機能していますが、Next
ボタンのためにウィザードの移行が正しく設定されていません。
ニース。できます。私はこれを行うより効率的な方法がないかと思います。今のところ私は答えとしてマークします。ありがとう。 – rbaleksandar