Python包:启动脚本时未加载样式表



我有一个具有以下结构的包:

package
├── LICENSE
├── README.md
├── MANIFEST.in
├── my_pkg
│   └── __init__.py
│   └── main.py
│   └── style.qss
├── setup.py

当我使用pip从github安装它时,样式表文件style.qss会被克隆,但当我启动键入foopkg的脚本时,它不会被加载。这是我的setup.py文件:

setup.py

import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="my_pkg",
version="0.0.1",
author="foo",
author_email="foo@mail.com",
description="A small gui",
long_description=long_description,
long_description_content_type="text/markdown",
# url="https://github.com/foo/pkg",
include_package_data=True,
packages=setuptools.find_packages(),
install_requires=[
'PyQt5',
],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.7',
entry_points={
"gui_scripts": [
"foopkg = my_pkg.main:main",
]
}
)

这是我的MANIFEST.in文件:

歧管.in

recursive-include my_pkg *.qss

主.py是

main.py

import sys
...
def main():
app = QApplication(sys.argv)
style_path = sys.path[0] + '/style.qss'
file = QFile(style_path)
file.open(QFile.ReadOnly)
stream = QTextStream(file.readAll())
app.setStyleSheet(stream.readAll())
gui = GuiWindow()
gui.show()
app.exec_()

if __name__ == '__main__':
main()

我错过了什么?为了能够使用样式表调用脚本,我应该修改什么?

构建路由时,必须考虑每个部分包含的信息,例如sys.path[0]包含启动应用程序的位置信息,例如在Linux中启动入口点时,在我的情况下它是/usr/bin。相反,您应该使用__file__属性:

import os

CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
def main():
app = QApplication(sys.argv)
style_path = os.path.join(CURRENT_DIR, 'style.qss')
file = QFile(style_path)
# ...

最新更新