pyinstaller 使我的 tkinter gui 变成空的黑色 window
pyinstaller makes an empty black window of my tkinter gui
举一个非常简单的例子,考虑下面的代码
import tkinter as tk
from tkinter import messagebox
class App:
def __init__(self, parent):
# some widgets
label = tk.Label(parent, text="Label")
button = tk.Button(parent, text="button")
label.pack()
button.pack()
# and a menu
menu = tk.Menu(parent)
parent.config(menu=menu)
Menu1 = tk.Menu(menu)
menu.add_cascade(label="Menu", menu=Menu1)
for x in 'ABCD':
Menu1.add_command(label="Menu " + x,
command=lambda y=x: messagebox.showinfo(message=y))
if __name__ == '__main__':
root = tk.Tk()
root.geometry("250x100+100+50")
root.title("My humble GUI")
App(root)
root.mainloop()
产生一个 window 像这样:
运行宁pyinstaller --onefile --noconsole minimal.py
后(代码文件的名称是minimal.py
),我在dist
文件夹中得到一个bundle文件(app)其中,当 运行 时,会给我以下信息:
菜单正常工作(这就是我加入它的原因;它不是真正的最小,但它表明某些东西正在工作...),但是 none [=34] 中的小部件=] 是可见的(更不用说 window 的黑色,我想这与问题有关)。
也有这样的情况,当我双击打开应用程序图标时,它会尝试打开它(该图标会在停靠栏中显示一秒钟),然后两秒钟后它会完全打开,或多或少;这似乎也不正常。
我该怎么办?
谢谢
因为我已经通过 Jupyter(分别是 Anaconda)开始使用 Python,而且还通过自制软件安装了 python,所以我 运行 遇到了 OP 描述的类似问题。意思是 tkinter windows 通过 python 解释器显示正常,但是一旦我用 pyinstaller 创建了一个可执行文件,一些 windows 的颜色就错误了(例如所有文本都是白色的)。
我找到了这个话题:Using pyinstaller with anaconda environment 谈论它所以去了:
conda create -n pyinstaller=3.6 -c defaults -c conda-forge
conda activate pyinstaller=3.6
但这并没有真正使 pyinstaller 工作,所以我进一步查看并卸载了我通过 pip 安装并通过 conda 安装的 pyinstaller
pip uninstall pyinstaller
conda install -c conda-forge pyinstaller
然后我尝试 运行 东西,但我遇到了一些外部包的问题。所以我检查了不再显示包的 pip 列表。事实上 pip 版本显示如下:
python3 -m pip --version
pip 21.1.2 from /opt/anaconda3/envs/pyinstaller=3.6/lib/python3.9/site-packages/pip (python 3.9)
不理想:-D
但是在“pip 安装”丢失的包之后,windows 在使用 pyinstaller 创建可执行文件后开始显示得很好。
我想如果你 运行 遇到这个问题,你可能只是遇到了不同 python 版本的冲突?
我也运行遇到过这个问题,我用最新开发版的pyinstaller解决了。首先,我使用 pip uninstall pyinstaller
卸载了 pyinstaller,然后使用以下命令获取最新版本:pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
这个答案可能有点晚了,但对于其他有这个问题的人来说:只需尝试不同版本的 pyinstaller。我不认为总能弄清楚后台发生了哪些奇怪的事情。对我来说,4.2 版有效。将其输入您的终端:
pip uninstall pyinstaller
pip install -Iv pyinstaller==4.2
我确实遇到了这个问题。我将 python 从 3.8 更新到 3.10,它为我解决了这个问题。不需要搞乱 pyinstaller。
如果您使用的是 macOS 12 Monterey,它很可能就是罪魁祸首。从 Python 的网站查看更多内容,以及要下载的文件 3.10 here.
举一个非常简单的例子,考虑下面的代码
import tkinter as tk
from tkinter import messagebox
class App:
def __init__(self, parent):
# some widgets
label = tk.Label(parent, text="Label")
button = tk.Button(parent, text="button")
label.pack()
button.pack()
# and a menu
menu = tk.Menu(parent)
parent.config(menu=menu)
Menu1 = tk.Menu(menu)
menu.add_cascade(label="Menu", menu=Menu1)
for x in 'ABCD':
Menu1.add_command(label="Menu " + x,
command=lambda y=x: messagebox.showinfo(message=y))
if __name__ == '__main__':
root = tk.Tk()
root.geometry("250x100+100+50")
root.title("My humble GUI")
App(root)
root.mainloop()
产生一个 window 像这样:
运行宁pyinstaller --onefile --noconsole minimal.py
后(代码文件的名称是minimal.py
),我在dist
文件夹中得到一个bundle文件(app)其中,当 运行 时,会给我以下信息:
菜单正常工作(这就是我加入它的原因;它不是真正的最小,但它表明某些东西正在工作...),但是 none [=34] 中的小部件=] 是可见的(更不用说 window 的黑色,我想这与问题有关)。
也有这样的情况,当我双击打开应用程序图标时,它会尝试打开它(该图标会在停靠栏中显示一秒钟),然后两秒钟后它会完全打开,或多或少;这似乎也不正常。
我该怎么办? 谢谢
因为我已经通过 Jupyter(分别是 Anaconda)开始使用 Python,而且还通过自制软件安装了 python,所以我 运行 遇到了 OP 描述的类似问题。意思是 tkinter windows 通过 python 解释器显示正常,但是一旦我用 pyinstaller 创建了一个可执行文件,一些 windows 的颜色就错误了(例如所有文本都是白色的)。
我找到了这个话题:Using pyinstaller with anaconda environment 谈论它所以去了:
conda create -n pyinstaller=3.6 -c defaults -c conda-forge
conda activate pyinstaller=3.6
但这并没有真正使 pyinstaller 工作,所以我进一步查看并卸载了我通过 pip 安装并通过 conda 安装的 pyinstaller
pip uninstall pyinstaller
conda install -c conda-forge pyinstaller
然后我尝试 运行 东西,但我遇到了一些外部包的问题。所以我检查了不再显示包的 pip 列表。事实上 pip 版本显示如下:
python3 -m pip --version
pip 21.1.2 from /opt/anaconda3/envs/pyinstaller=3.6/lib/python3.9/site-packages/pip (python 3.9)
不理想:-D 但是在“pip 安装”丢失的包之后,windows 在使用 pyinstaller 创建可执行文件后开始显示得很好。
我想如果你 运行 遇到这个问题,你可能只是遇到了不同 python 版本的冲突?
我也运行遇到过这个问题,我用最新开发版的pyinstaller解决了。首先,我使用 pip uninstall pyinstaller
卸载了 pyinstaller,然后使用以下命令获取最新版本:pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
这个答案可能有点晚了,但对于其他有这个问题的人来说:只需尝试不同版本的 pyinstaller。我不认为总能弄清楚后台发生了哪些奇怪的事情。对我来说,4.2 版有效。将其输入您的终端:
pip uninstall pyinstaller
pip install -Iv pyinstaller==4.2
我确实遇到了这个问题。我将 python 从 3.8 更新到 3.10,它为我解决了这个问题。不需要搞乱 pyinstaller。
如果您使用的是 macOS 12 Monterey,它很可能就是罪魁祸首。从 Python 的网站查看更多内容,以及要下载的文件 3.10 here.