繁琐主要体现在:
1、Python 中不能使用 QML 中的 id 查找控件,需要用 objectName,,一般这两者值是完全一样的,重复劳动
ComboBox {
id: cmbPort
objectName: "cmbPort"
Layout.minimumWidth: 100 * 2 + 10 * 2 + lblSer.width
model: ports
}
2、pyqtProperty 不太好用,,搞了好久没用起来,放弃了
3、Python 中无法直接使用 QML 中的控件,必须用 findObject 在 Python 中再定义一遍
self.cmbPort = self.win.findChild(QObject, 'cmbPort')
self.cmbBaud = self.win.findChild(QObject, 'cmbBaud')
self.cmbData = self.win.findChild(QObject, 'cmbData')
self.cmbParity = self.win.findChild(QObject, 'cmbParity')
self.cmbStop = self.win.findChild(QObject, 'cmbStop')
self.txtMain = self.win.findChild(QObject, 'txtMain')
self.txtSend = self.win.findChild(QObject, 'txtSend')
self.chkRHex = self.win.findChild(QObject, 'chkRHex')
self.chkWave = self.win.findChild(QObject, 'chkWave')
self.chkTHex = self.win.findChild(QObject, 'chkTHex')
self.chkLine = self.win.findChild(QObject, 'chkLine')
self.chkTime = self.win.findChild(QObject, 'chkTime')
self.btnOpen = self.win.findChild(QObject, 'btnOpen')
4、Python 中不能直接访问 QML 控件的属性,而需要用 property、setProperty 间接访问
比如 CombBox 控件有 currentText 属性,不能用 self.cmbPort.currentText 访问,而必须用 self.cmbPort.property('currentText')访问
5、文档资料很少,,没有应用示例
代码在此:https://github.com/XIVN1987/QmlSer
运行效果:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.