我有一个使用设置的QML应用程序。因此,我创建了一个python插槽,用于读取settings.toml
,并返回值。我已经正确设置了上下文属性,并且可以调用其他函数,而无需从QML返回值,不会出现问题
...
class Settings(QObject)
@pyqtSlot(str, str)
def getSettings(self, category, key):
try:
with open("settings.toml", "r") as settings:
toml_object = toml.load(settings)
return str(toml_object[category][key])
except FileNotFoundError:
self.settingsFileNotFound.emit()
except toml.TomlDecodeError:
self.settingsError.emit()
except BaseException:
self.fatalError.emit()
...
{
...
[last-used-font-settings]
font = "Arial"
...
从python打印函数时,它会按预期工作
...
print(Settings.getSettings("last-used-font-settings", "font")) # Returns Arial
...
但从qml登录时:
...
Component.onCompleted: console.log(Settings.getSettings("last-used-font-settings", "font"))
/* Returns qml: undefined */
...
如何解决这个问题? 我不太擅长创建@pyqtProperty,但如果我成功创建了一个,我肯定不想为每个值创建一个属性
你看,信号不能用于这个目的(
如果要从python返回值,则必须在pyqtSlot中使用“result”:
相关问题 更多 >
编程相关推荐