Python QT NextButton操作作为验证

时间:2016-07-18 08:00:34

标签: python multithreading qt

我希望在允许下一页传递之前单击下一个按钮时执行一些操作(例如运行一个函数),当我尝试使用connect执行它时我发现下一页的操作已经执行(即使它没有显示,意味着其他一些线程已经在运行下一个线程'动作)。

有没有办法在单击下一个按钮之前执行某些操作,并且由于此操作决定是否允许下一页?

我尝试过类似的事情:

self.ui.button(QtGui.QWizard.NextButton).clicked.connect(self._check_stuff)

但是当调用check的东西时,已经有线程运行下一个窗口'动作。任何人吗?

谢谢!

有人建议我应该覆盖validatePage,这听起来就像我想要的那样,但为此我必须继承QWizard(我已经尝试覆盖它的成员但是它没有用,我的QWizard是通过代码和设计师如:)

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Wizard</class>
 <widget class="QWizard" name="Wizard">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>920</width>
    <height>525</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Wizard</string>
  </property>
  <property name="wizardStyle">
   <enum>QWizard::MacStyle</enum>
  </property>
  <property name="options">
   <set>QWizard::CancelButtonOnLeft</set>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>

然后在我做的代码中:

self._ui = QtUiTools.QUiLoader().load("setup_wizard.ui")

如何创建我的特定WQizard并在代码中指定它?我尝试了完整的python路径包..没有工作等..

1 个答案:

答案 0 :(得分:1)

如果不允许下一页,您可以重新实现QWizard::validateCurrentPage(),返回false

请参阅QWizard::validateCurrentPage