首页 > 解决方案 > 使用 PyInstaller 创建 Onefile 会破坏 tkinter 窗口的透明度

问题描述

当我运行我的项目时,一切正常。但是,当 PyInstaller 创建可执行文件时,窗口实际上不再被点击,尽管它是透明的。

如果您运行以下代码,一切都会正常运行。但是,如果您pyinstaller --onefile examplegui.py在此文件上运行,则将不再单击它。这个错误并不适用--onedir

from tkinter import *
from tkinter.ttk import *


def main():

    root = Tk()
    mainframe = Frame(root)
    canv = Canvas(mainframe, height=400, width=400)

    mainframe.pack(fill=BOTH, expand=True)
    canv.pack()

    canv.create_rectangle(50, 50, 350, 350, fill='red', outline='')

    root.attributes('-transparentcolor', 'red')

    mainloop()


if __name__== '__main__':
    main()

标签: pythonpython-3.xtkinterpyinstaller

解决方案


似乎从来没有解决方案,所以我不妨在这里回答,因为我只记得这个问题。当时我发现的唯一解决方案(这似乎是在 Windows 7 和有时是 Windows 8 中发生的问题)是删除 onefile 并使用 onedir。

在获得这些之后,可以通过使用 winrar 创建 SFX 存档或类似“Inno Setup”之类的东西来模仿 onefile。


推荐阅读