SVG加载到帧

问题描述 投票:0回答:1

我正在尝试在我的Krita泊坞窗内加载svg小部件以充当游标。 Krita是一个绘画程序,它使用python和PyQt5加载插件。我做了一个空白的码头工人,几乎没有装载它。如果有任何添加,将在标有“测试”的区域中。

但是与其他参考相比,我的SVG加载方法似乎不起作用,我认为这可能是在尝试放置加载的查看器时框架本身的路径。

# Import Krita
from krita import *
from PyQt5 import QtWidgets, QtCore, QtGui, QtSvg, uic
import os.path

from PyQt5 import QtWidgets, QtSvg

# Set Window Title Name
DOCKER_NAME = "Blank"

# Create Docker
class BlankDocker(DockWidget):
    """
    Comments
    """
    # Initialize the Dicker Window
    def __init__(self):
        super(BlankDocker, self).__init__()

        # Window Title
        self.setWindowTitle(DOCKER_NAME)
        # Widget
        self.window = QWidget()
        self.layout = uic.loadUi(os.path.dirname(os.path.realpath(__file__)) + '/blank.ui', self.window)
        self.setWidget(self.window)

        # TESTING###################################################################################

        self.viewer = QtSvg.QSvgWidget()
        self.viewer.load('C:/Users/EyeOd/AppData/Roaming/krita/pykrita/blank/Notes/cursor_lmb.svg')
        self.viewer.setGeometry(QtCore.QRect(0,0,200,200))

        self.layout.frame.addWidget(self.viewer) #??

        ############################################################################################
    # Change the Canvas
    def canvasChanged(self, canvas):
        pass

我加载的* .UI文件的关注区域是QFrame =“ frame”,我想在其中将小部件放在其中以在其中移动。http://pasteall.org/pic/show.php?id=b7083dbb5e13adafcddb9ee9fdfa8fcd

python python-3.x pyqt pyqt5
1个回答
0
投票

QFrame没有任何名为addWidget的方法,因此您应该有一个例外。因此,如果要将QSvgWidget放在QFrame中,则有2种选择:

  • 设置为QSvgWidget的父级到QFrame。

    self.viewer = QtSvg.QSvgWidget(self.window.frame)
    self.viewer.load('C:/Users/EyeOd/AppData/Roaming/krita/pykrita/blank/Notes/cursor_lmb.svg')
    self.viewer.setGeometry(QtCore.QRect(0, 0, 200, 200))
  • 使用布局:

    self.viewer = QtSvg.QSvgWidget()
    self.viewer.load('C:/Users/EyeOd/AppData/Roaming/krita/pykrita/blank/Notes/cursor_lmb.svg')
    lay = QVBoxLayout(self.window.frame)
    lay.addWidget(self.viewer)

:如果使用self.layout = uic.loadUi(..., self.window),则将看到self.layout是同一self.window对象,因此为了避免混淆,建议使用uic.loadUi(..., self.window)

© www.soinside.com 2019 - 2024. All rights reserved.