pyqt5 py2app/pyinstaller MacOS High Sierra QPixmap::scaled: 像素图是一个空像素图

pyqt5 py2app/pyinstaller MacOS High Sierra QPixmap::scaled: Pixmap is a null pixmap

我在 pyqt5 脚本上使用 py2app 来开发独立应用程序。 该程序必须在对话框中显示一张照片。我使用下面的脚本,它在 Ubuntu 和 windows 上工作正常,无论是在使用 python 还是在使用 pyinstaller 独立可执行文件时。

然而,在 MacOS High Sierra 上,当使用 python 到 运行 脚本时,图像显示得很好。当我使用 py2app 或 pyinstaller 制作可执行文件时,我得到了著名的 QPixmap::scaled: Pixmap is a null pixmap 错误。

这是放置图片的代码:

pic = QLabel(Dialog)
height_label = 300
pic.resize(Dialog.width(), height_label)
pixmap = QtGui.QPixmap(
    os.path.join(os.getcwd(), "main.jpg"))
pic.setPixmap(pixmap.scaled(pic.size(), QtCore.Qt.IgnoreAspectRatio))

如果程序需要图片的特定数据,最好在py2app setup.py中用DATA_FILES = ["main.jpg"].

指定文件

os.getcwd() 只会在可执行文件是来自命令行的 运行 时重定向可执行文件目录。否则它将默认为系统的主目录。 这会很好用:

    file = sys.argv[0]
    dirname = os.path.dirname(file)
    pixmap = QtGui.QPixmap(
        os.path.join(dirname, "main.jpg"))