我正在尝试在我的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
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)