PyQt5 / PyQt

PyQt Examples(PyQt各种测试和例子) PyQt4 PyQt5
GNU Lesser General Public License v2.1
6.65k stars 1.97k forks source link

[问题] 请问 PyQt 的 `setStyleSheet` 具体怎么寻找 qss 文件中的文件 #188

Closed qin-yu closed 4 months ago

qin-yu commented 4 months ago

你好,我在使用 setStyleSheet() 方程时发现某些包对路径的改动导致该方程在寻找 .qss 文件中描述的文件时找错地方,但我发现 PyQt 好像不是开源的代码所以也没找到这个到底怎么修复。

比如:这个文件中第145行的 style https://github.com/napari/napari/blob/6c8245ad963095ae6c528fc7f5964f393e37606a/napari/_qt/qt_resources/styles/00_base.qss#L145

QComboBox::down-arrow {
   image: url("theme_{{ id }}:/drop_down_50.svg");
   width: 14px;
   height: 14px;
}

(其实最终形态是 url("theme_dark:/drop_down_50.svg")

这个 svg 文件 url("theme_dark:/drop_down_50.svg") 具体是怎么被 PyQt 找到的有什么说法吗?哪里可以阅读相关资料?

谢谢!

892768447 commented 4 months ago

qrc

892768447 commented 4 months ago

你好,我在使用 setStyleSheet() 方程时发现某些包对路径的改动导致该方程在寻找 .qss 文件中描述的文件时找错地方,但我发现 PyQt 好像不是开源的代码所以也没找到这个到底怎么修复。

比如:这个文件中第145行的 style https://github.com/napari/napari/blob/6c8245ad963095ae6c528fc7f5964f393e37606a/napari/_qt/qt_resources/styles/00_base.qss#L145

QComboBox::down-arrow {
   image: url("theme_{{ id }}:/drop_down_50.svg");
   width: 14px;
   height: 14px;
}

(其实最终形态是 url("theme_dark:/drop_down_50.svg")

这个 svg 文件 url("theme_dark:/drop_down_50.svg") 具体是怎么被 PyQt 找到的有什么说法吗?哪里可以阅读相关资料?

谢谢!

搜索 qrc 相关资料

qin-yu commented 4 months ago

我看过这个的相关资料但这可能不是真的 QRC 文件,因为 find . -name "*.qrc" 返回空白。但你确实提醒了我应该再看一下这个文件是怎么被生成的(目前确定是 dynamically generated by Napari)

qin-yu commented 4 months ago

搜索 qrc 相关资料

谢谢谢谢,你回复好快,不过还有一个问题就是,这个文档全 todo 是真的吗还是我找错地方了

image

qin-yu commented 4 months ago

(btw 我一开始想试试在你的论坛上问但好像没有注册发帖的功能,然后图像无法显示可能是 https/证书 的问题?)

892768447 commented 4 months ago

我看过这个的相关资料但这可能不是真的 QRC 文件,因为 find . -name "*.qrc" 返回空白。但你确实提醒了我应该再看一下这个文件是怎么被生成的(目前确定是 dynamically generated by Napari)

你需要自己编写qrc,或者设计师 比如: https://www.cnblogs.com/WSX1994/p/10163806.html

qin-yu commented 4 months ago

谢谢你,我刚才解决了这个问题,确实是 Qt 没有找到路径,需要用 PyQt5.QtCore.QDir.addSearchPath() 来添加。相关的讨论: