python - SVG 加载到 Frame
问题描述
我正在尝试在我的 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 中,您有两种选择:
设置为 QFrame 的 QSvgWidget 的父级。
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)
推荐阅读
- javascript - 如何将小写规范器添加到 Elasticsearch 映射对象?
- microsoft-teams - 具有任意 iframe 网络内容的 Microsoft Teams 机器人任务模块?
- assembly - Assembly `push`、`pop`、`call` 和 `ret` 操作的幕后究竟发生了什么?
- javascript - 如何使用 javascript 验证表单电子邮件地址?
- forms - 同一页面中的两个表单
- ios - Swift - 自动订购 UITableView
- javascript - 不要在特定输入上做某事
- powerbi - 由 VAR 定义的 DAX 变量产生不同的结果,然后 CALCULATE
- javascript - $ 表示法访问基类类的属性
- python - 如何在 Python 中跟踪打开文件/文件描述符的总数