【发布时间】:2021-03-24 22:59:37
【问题描述】:
我有一个 TKinter 应用程序,我将它放在 Visual Studio Code 中。它在 Visual Studio Code 中运行得非常好,并且不会冻结或类似的东西。因为我希望我的程序也可以在其他电脑上运行,所以我使用 pyinstaller 通过运行创建了一个 .exe 文件
pyinstaller --onefile -w "main.py"
这会毫无问题地创建所需的 .exe 文件。可悲的是,当放入 .exe 文件时,我的程序经常崩溃,崩溃是指窗口不再响应,或者窗口在一段时间后自行关闭。 我不知道这是否是一个常见问题,但老实说,我不知道该怎么办。 显然我的代码没有任何问题,因为它在 Visual Studio Code 中运行得非常好。
有什么我可以做的吗?
编辑 1: 我的窗口在我的代码的这些行周围冻结: 我正在尝试使用 for 循环创建 4 个比例:
for i in range(4):
scale = tk.Scale(self.root, state = "disabled", from_ = 100, to = 0)
scale.place(rely=0.2,relx=i*0.25,relwidth=0.25, relheight=0.8)
self.scales.append(scale)
我还尝试将我的体重秤放入列表self.scales,以便以后可以使用我的体重秤。该程序可以毫无问题地创建前三个音阶,但通常无法创建第四个音阶。
编辑 2: 我想我找到了一个解决方案:也许 for 循环对于 Tkinter 来说太快了,它无法快速创建 GUI 项目,我补充道
time.sleep(0.1)
对于我的 for 循环,目前,这似乎可行。但我真的不知道它是否应该是这样的。
编辑 3: 没关系,这并没有解决问题。这个问题与创建音阶有关。 我真的不知道该怎么办。
【问题讨论】:
-
如果您在应用程序中使用任何外部文件,请确保它们与
.exe位于同一目录中,并且如果您也希望将数据文件捆绑在您的 exe 中,您可以使用标记--add-data并按照stackoverflow.com/a/13790741/14094985 中的说明修改您的代码,因为Pyinstaller 在执行期间将所有依赖项解压缩到一个临时目录。 -
感谢您的回答!我使用的唯一文件是 .py 文件和 .ico 文件,.ico 文件位于同一目录中,所以这应该不是问题。除此之外,我在访问文件时都使用了 try/except。
-
好的,您可以使用
-c标志而不是-w标志,这样生成的可执行文件将处于控制台模式,这将帮助您查看您之前发生的确切错误应用程序崩溃。 -
pyinstaller -y -F "onefile.py" - 添加一个控制台,错误应该在此提示
-
我的问题编辑了多次,也许你可以看看。
标签: python windows tkinter pyinstaller exe