【发布时间】:2013-12-11 13:42:16
【问题描述】:
我正在使用 Qt-desiger 制作 GUI。
例如,我在 Groubbox 的 QCombobox 中有一个 QSpinbox。
我如何将SetValue 用于我的 Spinbox?
我必须如何“描述”我的 Spinbox 的方式?
【问题讨论】:
标签: pyqt qt-designer qspinbox
我正在使用 Qt-desiger 制作 GUI。
例如,我在 Groubbox 的 QCombobox 中有一个 QSpinbox。
我如何将SetValue 用于我的 Spinbox?
我必须如何“描述”我的 Spinbox 的方式?
【问题讨论】:
标签: pyqt qt-designer qspinbox
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)
...
这就是你所需要的。
【讨论】:
首先需要使用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)
【讨论】: