【问题标题】:PyQt 5.5 QML ComboboxPyQt 5.5 QML 组合框
【发布时间】: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 #### <- ?????????
 ...

...

嗯,我的问题是:

  1. 是否有更好的方法来加载我的表单?

使用self.win.findChild(QObject, objName),我可以获得QObject,但不能获得ComboBox 对象。

  1. 如何在 QML 文件中获取 ComboBox 对象?

ComboBox 上使用property.read() (QObject) 我得到一个QAbstractListModel 对象。

  1. 如何设置ComboBox 对象的模型与之前获得的QObject

简单来说:

如何使用 python 和 PyQt 在Combobox QML 中设置我的自定义模型?

【问题讨论】:

    标签: python-3.x qml qt5 qtquick2 pyqt5


    【解决方案1】:

    我找到了解决办法:

    def loadForm(self):
     ...
     self.setPropList("cmbTypeCompression", "model", ["Item A", "Item B"])
    
    def setPropList(self, objName,  propName, values):
     obj = self.win.findChild(QObject, objName)
     property = QQmlProperty(obj, propName)
     property.write(values)
    

    ...但我不知道这是否是最好的解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      相关资源
      最近更新 更多