【发布时间】:2015-10-27 17:08:13
【问题描述】:
我正在尝试使用 QML(从源代码安装)来玩 PyQt 5.5。
这是我的main.qml:
Window {
...
ComboBox {
objectName: "cmbTypeCompression"
width: 240
height: 26
model: ListModel {
id: cbItems
ListElement { text: "Banana" }
ListElement { text: "Apple" }
ListElement { text: "Coconut" }
}
...
}
这是我的代码.py
class GUI(QApplication):
self.app = QApplication([])
self.engine = QQmlApplicationEngine()
self.ctx = self.engine.rootContext()
self.ctx.setContextProperty("main", self.engine)
self.engine.load(URL)
self.loadForm()
self.loadSignal()
self.app.exec_()
def loadSignal(self):
obj = self.win.findChild(QObject, "btnSave")
obj.messageRequired.connect(myFunction)
def loadForm(self):
self.setProp("txtCompSub", "text", config.compression.sub_folder)
self.setProp("txtNumProtos", "text", config.compression.num_prototype)
self.setPropList("cmbTypeCompression", "model", ["A", "B", "C"])
def setProp(self, objName, propName, value):
obj = self.win.findChild(QObject, objName)
property = QQmlProperty(obj, propName)
property.write(value)
def setPropList(self, objName, propName, values):
obj = self.win.findChild(QObject, objName)
property = QQmlProperty(obj, propName)
property.setModel #### <- ?????????
...
...
嗯,我的问题是:
- 是否有更好的方法来加载我的表单?
使用self.win.findChild(QObject, objName),我可以获得QObject,但不能获得ComboBox 对象。
- 如何在 QML 文件中获取
ComboBox对象?
在ComboBox 上使用property.read() (QObject) 我得到一个QAbstractListModel 对象。
- 如何设置
ComboBox对象的模型与之前获得的QObject?
简单来说:
如何使用 python 和 PyQt 在Combobox QML 中设置我的自定义模型?
【问题讨论】:
标签: python-3.x qml qt5 qtquick2 pyqt5