我正在为一个个人项目构建一个GUI。我使用Figma设计了GUI,并以svg的形式下载了我的自定义映像。然后,我使用这些svg作为我的应用程序中小部件的背景图像。为此,我将每个小部件的StyleSheet设置为相应的图像,如下所示:
self.setStyleSheet("QMainWindow{background-color: #FFFFFF; background-image: url(" + background_path + ");}")
其中background_path是:
os.path.join(base_directory,"Images","Figma","login_window","Background.svg")
。
我使用以下if语句设置基目录:
if getattr(sys, 'frozen', False):
base_directory = os.path.dirname(sys.executable)
EXE_APPLICATION = True
elif __file__:
base_directory = os.path.dirname(__file__)
EXE_APPLICATION = False
当我从IDE运行应用程序时,这个应用程序工作得很好,但是当我使用pyinstaller打包应用程序时,没有一个映像被加载,并且我从终端Could not parse stylesheet of object
接收到以下消息。我使用pyinstaller打包应用程序的代码行是
pyinstaller --windowed --name="Scouting Tool" --icon="colina_icon.icns" --add-data="Data:Data" --add-data="Fonts:Fonts" --add-data="Images:Images" cst_0.1.py
。
数据、字体和图像文件夹与python文件位于同一个目录中。当我查看dist
文件夹时,所有三个文件夹都显示了它们中的所有图像和信息。我添加了一个print语句,以确保在打包应用程序时路径是正确的,在我看来是正确的:
/Users/wapym/Desktop/Colina_GUI/dist/Scouting Tool/Images/Figma/login_window/Background.svg
。
我不知道为什么当应用程序被打包时,它不能通过styleSheet解析,但是当我从我的IDE运行它时,它可以解析。我不确定这是PyQt6问题还是pyinstaller问题。我已经尝试过查看Qt资源,但是对于PyQt6来说,它们似乎已经过时了。我也尝试使用pngs,但我也得到了同样的错误。如果有人知道为什么会发生这个问题,请告诉我。:)
发布于 2022-06-30 05:24:13
正如@musicamante所述,解决方案是在url周围添加行分隔符。
self.setStyleSheet("... url('" + background_path + "');}")
https://stackoverflow.com/questions/72808186
复制相似问题