我正在使用 Qt-desiger 制作 GUI。
例如,我在 Groubbox 的 QCombobox 中有一个 QSpinbox。
我如何SetValue
用于我的 Spinbox?我必须如何“描述”我的 Spinbox 的方式?
问问题
305 次
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
类的属性。属性名称将与objectName
Qt Designer 中设置的属性相同。因此,如果 QComboBox 被命名为“comboBox”,而 QSpinBox 被命名为“spinBox”,则可以在MainWindow
类中访问它们,如下所示:
self.comboBox.addItems('Foo')
self.spinBox.setValue(10)
于 2013-12-11T17:51:50.663 回答