python - pyinstaller 为我的 tkinter gui 制作一个空的黑色窗口

标签 python macos tkinter pyinstaller

对于一个非常简单的示例,请考虑以下代码

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()


它产生一个像这样的窗口:
enter image description here
运行后pyinstaller --onefile --noconsole minimal.py (代码文件的名称是 minimal.py ),我在 dist 中获得文件夹一个捆绑文件(应用程序),运行时,给我以下内容:
enter image description here
菜单正常工作(这就是我包含它的原因;它并不是真正最小的,但它表明某些东西正在工作......),但窗口中的所有小部件都不可见(更不用说黑色窗口,我认为这与问题有关)。
还有一种情况是,当我双击应用程序图标打开它时,它尝试打开它(图标在停靠栏中显示一秒钟),然后在两秒钟后或多或少地打开它;这似乎也不正常。
我该怎么办?
谢谢

最佳答案

由于我已经通过 Jupyter(分别是 Anaconda)开始使用 Python,但也通过自制软件安装了 Python,因此我遇到了与 OP 描述的类似问题。意思是 tkinter 窗口通过 python 解释器显示得很好,但是一旦我用 pyinstaller 创建了一个可执行文件,一些窗口就会有错误的颜色(例如,所有文本都是白色的)。
我找到了这个话题: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 list 。事实上 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安装”丢失的包之后,在使用pyinstaller创建可执行文件后,窗口开始显示得很好。
我想如果你遇到这个问题,你可能只是有不同python版本的冲突?

关于python - pyinstaller 为我的 tkinter gui 制作一个空的黑色窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67333155/

相关文章:

python - 为什么 TLS 很慢?

macos - 找不到 ngrok 命令

macos - 如何使用IPMI监控本地设置?

tk 中的 Python 可滚动小部件

python - 我如何通过 python 将雪花与 Oauth 连接?

python - Pandas Date Format 不转换日期

python - GridSearch sklearn 上的参数感知评分函数

macos - 在 OSX/Unix 上启动一个不继承文件/端口的子进程

python - tkinter 消息框始终出现在 pygame 主窗口后面

python - Tkinter 全屏应用