如何在其他小部件中接近QSpinbox?

时间:2013-12-11 13:42:16

标签: pyqt qt-designer qspinbox

我正在使用Qt-designer制作GUI 例如,我在Groupbox的QCombobox中有一个QSpinbox 如何将SetValue用于我的Spinbox? 我如何“描述”通往Spinbox的方式?

2 个答案:

答案 0 :(得分:2)

其他窗口小部件中的窗口小部件不会在Qt中创建层次结构,这意味着如果您在widget1widget2,则可以直接访问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)
        ...

这就是你所需要的一切。

答案 1 :(得分:1)

首先需要使用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 Designer中设置的objectName属性相同。因此,如果QComboBox被命名为" comboBox",而QSpinBox被命名为" spinBox",则可以在MainWindow类中访问它们,如下所示:

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