SVG load to Frame



我正试图在我的Krita docker中加载一个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="框架",我想在其中放置小部件以在内部移动。http://pasteall.org/pic/show.php?id=b7083dbb5e13adafcddb9ee9fdfa8fcd

QFrame没有任何名为addWidget的方法,因此应该有一个异常。因此,如果你想把QSvgWidget放在QFrame中,你有两个选择:

  • 将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)

最新更新