Python 包:启动脚本时未加载样式表
Python package: Stylesheet not loaded when launching script
我有一个结构如下的包:
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
文件:
MANIFEST.in
recursive-include my_pkg *.qss
main.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)
# ...
我有一个结构如下的包:
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
文件:
MANIFEST.in
recursive-include my_pkg *.qss
main.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)
# ...