【问题标题】:how to approach a QSpinbox in other widgets?如何在其他小部件中处理 QSpinbox?
【发布时间】:2013-12-11 13:42:16
【问题描述】:

我正在使用 Qt-desiger 制作 GUI。
例如,我在 Groubbox 的 QCombobox 中有一个 QSpinbox。
我如何将SetValue 用于我的 Spinbox? 我必须如何“描述”我的 Spinbox 的方式?

【问题讨论】:

    标签: pyqt qt-designer qspinbox


    【解决方案1】:

    Qt中其他Widgets内部的Widgets不会创建层次结构,这意味着如果widget2内部有widget1,则可以直接访问widget1,如self.widget1(和self.widget2

    您可以创建一个类,该类将包含您的 ui 表单上的所有小部件,如下所示:

    from PyQt4 import uic
    Form, Base = uic.loadUiType(r'path\to\your\uifile.ui') #get ui Form and Base class
    class Window(Form, Base):
        def __init__(self, parent = None):
            #here you can access your widgets
            #self.combobox.addItem('Item')
            #self.spinbox.setValue(10)
            ...
    

    这就是你所需要的。

    【讨论】:

      【解决方案2】:

      首先需要使用pyuic从设计器ui文件中生成python模块:

      pyuic4 -o mainwindow_ui.py mainwindow.ui
      

      然后将其导入您的应用程序:

      from PyQt4 import QtCore, QtGui
      from mainwindow_ui import Ui_MainWindow
      
      class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
          def __init__(self):
              super(MainWindow, self).__init__()
              self.setupUi(self)
      
      if __name__ == '__main__':
      
          import sys
          app = QtGui.QApplication(sys.argv)
          window = MainWindow()
          window.show()
          sys.exit(app.exec_())
      

      这将添加来自 Qt Designer 的所有小部件,并使它们成为MainWindow 类的属性。属性名称将与在 Qt 设计器中设置的 objectName 属性相同。因此,如果 QComboBox 被命名为“comboBox”,而 QSpinBox 被命名为“spinBox”,则可以在 MainWindow 类中访问它们,如下所示:

          self.comboBox.addItems('Foo')
          self.spinBox.setValue(10)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多