gpt4 book ai didi

python - PyQt + 自定义 QML 对象 : Cannot read property 'x' of null

转载 作者:行者123 更新时间:2023-12-01 09:24:49 24 4
gpt4 key购买 nike

使用PyQt + QML,非常直观。不过我有点难住了。 qml 绑定(bind)“window.current.summary”提示标题中的错误 Cannot read property 'summary' of null

Python:

class DataPoint(QObject):
....
@pyqtProperty('QString')
def summary(self):
print("Retrieving summary: ", self._datapoint.summary)
return self._datapoint.summary


class Weather(QObject):
....
@pyqtProperty(DataPoint, notify=forecastChanged)
def current(self):
return DataPoint(self._forecast.currently())

@pyqtProperty('QString', notify=forecastChanged)
def current_summary(self):
return self._forecast.currently().summary

QML:

Weather {
id: w1
}

Text {
...
id: current_temp
text: w1.current.summary
// text: w1.current_summary // this works
}

我想我在这里错过了一些明显的东西。我已经证实“当前”属性(property)确实受到询问。从未见过检索摘要,这表明 DataPoint 本身从未被询问过。我们如何让 QML w1.current.summary 按预期绑定(bind)?

最佳答案

我发现了这个问题。行:

@pyqtProperty(DataPoint, notify=forecastChanged)
def current(self):
return DataPoint(self._forecast.currently())

都是罪魁祸首。更改为

@pyqtProperty(DataPoint, notify=forecastChanged)
def current(self):
return self._datapoint

之前将 self._datapoint 设置为 DataPoint 即可解决该问题。

我由此得出结论,Python 中的内存管理确实非常临时,与 C# 相比,它更像 C++ - 并且临时的DataPoint 在返回时立即从作用域和内存中消失。 当前()

关于python - PyQt + 自定义 QML 对象 : Cannot read property 'x' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50517837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com