.py脚本的工作方式与可执行二进制文件不同

时间:2019-04-28 22:02:51

标签: pyqt5 pyinstaller

我用PyQt5编写了一个Hangman游戏。

玩家有10次机会猜出这个秘密单词。在此游戏中,当他们猜错时,计数器将递增,并加载下一张图像。

当我运行python hangman.py时,游戏将按预期运行。但是,当我使用PyInstaller并生成二进制文件时,显示最后一个图像时出现间歇性问题。当计数器达到9时,s9.jpg图像应该被加载,但是看起来好像没有(或者确实加载了,但是很快消失了)。在其他时候,它会按预期工作。我很困惑。

编辑: 我正在使用Ubuntu 18.04

我试图使用QEventLoop来给一些时间来清除屏幕之前的图像。

我的项目结构:

hangman.py
hangman
/img
    s0.jpg
    s1.jpg
    ...
    s8.jpg
    s9.jpg 

还有我的一些代码。希望这是所需的最低数量:

def buttonClick(self):

    letter = self.sender().text()
    if letter in self.secret:
        ...
    else:
        self.lostCount+=1
        self.setHanger(self.lostCount)
        if self.lostCount == 9:
            # empty loop for showing the hidden word AND the last image
            self.emptyLoop(2000)
            self.word.setText(self.secret)
            self.emptyLoop(2000)
            self.gameOver(False)


def setHanger(self, elements):
    pixmap = QPixmap('img/{}.jpg'.format(elements))
    self.hanger.setPixmap(pixmap)



def emptyLoop(self, duration):
    loop = QEventLoop()
    QTimer.singleShot(duration, loop.quit)
    loop.exec_()

我希望在调用gameOver(False)之前加载最后一个图像。但是有时它根本不加载。而且我在行为上没有任何规律性。我也很好奇为什么脚本运行的程序运行良好,而二进制运行的却不是。我想这都是关于使用PyInstaller的。但为什么?以及将来如何避免这种问题?

0 个答案:

没有答案