gpt4 book ai didi

python - .py转.exe生成黑窗应用几秒后消失

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:58 25 4
gpt4 key购买 nike

我试图将我的 pygame 项目转换为一个 .exe 文件,但输出是黑色窗口(图 3)。

我已经尝试使用具有这样设置的自动 py-to-exe 应用程序来做到这一点(图 1)。在此之前,我曾尝试在 PowerShell 中使用这行代码。

PS D:\my_projects\python_projects\tic_tac_toe_project> pyinstaller --onefile -w tic_tac_toe.py

两种解决方案都返回相同的输出(图像 2 和图像 3),没有错误消息,而预期输出是(图像 4)。

图 1

image1

图 2

image2

图 3

image3

图 4

image4

console_output_img

最佳答案

编辑:

所以这是使用 pygame.font.SysFont() 的问题.我不确定为什么它不起作用,而且很难找出原因,因为它使用 .pyd 文件,我相信它是 c API 的扩展。解决方法是使用 pygame.font.Font()反而。在您的应用程序中,您发送 None作为字体,它只返回 pygame 的默认字体,即 freesansbold.ttf。要使用此字体,您需要将其包含在包中,因为它不存在于 Windows 注册表中。

import os # Importing os and pygame at top of spec sheet
import pygame

pygame_dir = os.path.dirname(pygame.__file__) # Grabbing the name of the local pg install
path_t_font = os.path.join(pygame_dir, 'freesansbold.ttf')

a = Analysis(['tic_tac_toe.py'],
pathex=[],
binaries=[],
datas=[(path_t_font, '.')], # Adding the font to data
.....

然后您需要更改 user_interface.py 中的第 12 行到:

# self.font = pygame.font.SysFont(None, 24) Instead of this use the code below
self.font = pygame.font.Font('freesansbold.ttf', 24)

不确定为什么会发生这种情况,但这是一个 hacky 修复。

如果您要使用 --onefile模式,您还需要将其添加到 tic_tac_toe.py 脚本的顶部。

import sys, os
os.chdir(sys._MEIPASS)

来自旧答案:

将详细标志添加到您的 PyInstaller 规范表以了解正在发生的事情。首先使用 pyi-makespec <YOUR SCRIPT> 创建规范表然后打开它创建的规范表。

转到 exe=EXE部分并添加这段代码。

exe = EXE(pyz,
a.scripts,
[('v', None, 'OPTION')], # Add this right here
exclude_binaries=True,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )

现在使用自定义规范表捆绑您的包,然后运行它。您应该得到一个显示一些消息的控制台。这将告诉您正在加载什么,并让您了解正在发生的事情。

关于python - .py转.exe生成黑窗应用几秒后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com