为了账号安全,请及时绑定邮箱和手机立即绑定

QML:为图像设置“源”属性会导致它消失

QML:为图像设置“源”属性会导致它消失

烙印99 2021-08-05 15:21:46
我想要做的是在 PyQt5 中使用 QML 更新图像的源。当我element.setProperty("source", "./testImage.png")用来更改图像时,我收到以下错误消息。QML 图像:协议“”未知关于如何解决这个问题的任何想法?我已经研究了与 QML 元素交互的其他方法,如果可能的话,我想坚持通过 Python 代码而不是仅通过 QML 更改图像。主文件from PyQt5.QtWidgets import *from PyQt5.QtQml import *from PyQt5.QtCore import *from PyQt5.QtQuick import *from PyQt5 import *import sysimport resource_rcclass MainWindow(QQmlApplicationEngine):    def __init__(self):        super().__init__()        self.load("main.qml")        self.rootContext().setContextProperty("MainWindow", self)        self.window = self.rootObjects()[0]        self.cardLeft = self.window.findChild(QObject, "cardLeft")    @pyqtSlot()    def changeImage(self):        self.cardLeft.setProperty("source", "./images/3_of_clubs.png")if __name__ == '__main__':    app = QApplication(sys.argv)    window = MainWindow()    sys.exit(app.exec_())
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

你必须QUrl为它传递一个你必须使用的QUrl::fromLocalFile():


import os

import sys

from PyQt5 import QtCore, QtGui, QtQml

# import resource_rc


dir_path = os.path.dirname(os.path.realpath(__file__))



class MainWindow(QtQml.QQmlApplicationEngine):

    def __init__(self):

        super().__init__()

        self.load(QtCore.QUrl.fromLocalFile(os.path.join(dir_path, "main.qml")))

        self.rootContext().setContextProperty("MainWindow", self)


        if self.rootObjects():

            self.window = self.rootObjects()[0]

            self.cardLeft = self.window.findChild(QtCore.QObject, "cardLeft")


    @QtCore.pyqtSlot()

    def changeImage(self):

        if self.cardLeft:

            url = QtCore.QUrl.fromLocalFile(os.path.join(dir_path, "images/3_of_clubs.png"))

            self.cardLeft.setProperty("source", url)



if __name__ == '__main__':

    app = QtGui.QGuiApplication(sys.argv)

    window = MainWindow()

    sys.exit(app.exec_())


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号