0

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

4

2 回答 2

2

其他 Widgets 中的 Widgets 不会在 Qt 中创建层次结构,这意味着如果您widget1在其中widget2可以直接访问widget1, like self.widget1(and 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)
        ...

这就是你所需要的。

于 2013-12-12T20:00:01.360 回答
1

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

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类的属性。属性名称将与objectNameQt Designer 中设置的属性相同。因此,如果 QComboBox 被命名为“comboBox”,而 QSpinBox 被命名为“spinBox”,则可以在MainWindow类中访问它们,如下所示:

    self.comboBox.addItems('Foo')
    self.spinBox.setValue(10)
于 2013-12-11T17:51:50.663 回答