python - 使用 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()
解决方案
似乎从来没有解决方案,所以我不妨在这里回答,因为我只记得这个问题。当时我发现的唯一解决方案(这似乎是在 Windows 7 和有时是 Windows 8 中发生的问题)是删除 onefile 并使用 onedir。
在获得这些之后,可以通过使用 winrar 创建 SFX 存档或类似“Inno Setup”之类的东西来模仿 onefile。
推荐阅读
- ruby - 罗马到整数重构
- javascript - 为什么 Array.prototype.includes(searchElement) 的参数需要与数组元素相同的类型?
- mysql - MySQL Entity Framework 不保存数据
- javascript - appendTo后如何让一个div飞到另一个div
- swift - 滚动到 WKWebView 的底部,macOS?
- javascript - 如何在 Angular 6 中格式化日期?
- angular - JSONP 调用成功,但出现错误:JSONP 注入脚本未调用回调
- python - 如何对 1000 个独特的时间序列数据进行数据探索?
- amazon-web-services - 如何在 AWS Lambda 中正确创建身份验证中间件
- c++ - GTest:使用 std::function 参数化测试时的 Valgrind 警告