<p>如果希望选中单选按钮,那么一个简单的解决方案是将它与每个页面的<a href="https://doc.qt.io/qt-5/qbuttongroup.html" rel="nofollow noreferrer">QButtonGroup</a>关联,并使用<a href="https://doc.qt.io/qt-5/qbuttongroup.html#checkedButton" rel="nofollow noreferrer">checkedButton()</a>函数选中该选项。要知道何时按下finish按钮,必须使用QWizard的<a href="https://doc.qt.io/qt-5/qwizard.html#button" rel="nofollow noreferrer">button()</a>函数并将其连接到插槽。你知道吗</p>
<p>也不必有两个函数与page3arg和page2arg相同,我将其简化为n个参数的广义函数</p>
<pre class="lang-py prettyprint-override"><code>from PyQt4 import QtCore, QtGui
class Wizard(QtGui.QWizard):
def __init__(self, parent=None):
super(Wizard, self).__init__(parent)
datas = [["a", "b", "c"], ["e", "f"], ["g", "f"]]
titles = ["one", "two", "three"]
self.setStyleSheet(('font:50 10pt "MS Shell Dlg 2";'))
self.groups = []
for title, options in zip(titles, datas):
page, group = Wizard.create_page(title, options)
self.addPage(page)
self.groups.append(group)
self.button(QtGui.QWizard.FinishButton).clicked.connect(
self.on_finished
)
self._results = []
@property
def results(self):
self.get_options()
return self._results
def get_options(self):
self._results = []
for group in self.groups:
button = group.checkedButton()
if button is not None:
self._results.append(button.text())
@QtCore.pyqtSlot()
def on_finished(self):
print("finished", self.results)
@staticmethod
def create_page(title, options):
page = QtGui.QWizardPage()
group = QtGui.QButtonGroup(page)
page.setTitle(title)
page.setSubTitle("Please choose one of these state.")
hlay = QtGui.QHBoxLayout(page)
for option in options:
radiobutton = QtGui.QRadioButton(text=option)
group.addButton(radiobutton)
hlay.addWidget(radiobutton)
return page, group
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
wizard = Wizard()
wizard.show()
ret = app.exec_()
print("outside clas", wizard.results)
sys.exit(ret)
</code></pre>