从另一个应用程序 (MacOS) 的全屏启动时,Tkinter 应用程序被去图标化

问题描述 投票:0回答:1

我有一个 tk 实例我希望它永远保持不可见但是当应用程序启动而另一个应用程序(例如 VS 代码)全屏时,它会失去其不可见状态。我希望 root 永远被撤回并且永远不可见或无法与之交互(唯一真正的方法是通过 Dock 关闭它,但这不会去图标化,所以没关系)。我怎样才能使它始终保持不可见状态(不使用 alpha,因为您仍然可以关闭它并弄乱它)?要了解此问题,请在终端全屏的文件中运行以下命令:

from tkinter import Tk
root = Tk()
root.withdraw()
root.mainloop()

问题视频

python macos tkinter fullscreen
1个回答
0
投票

Tkinter 根窗口创建和立即退出时出现两个问题,而另一个应用程序正在全屏模式下运行。

  1. Tkinter窗口出现在另一个桌面(工作区),当前桌面变成那个桌面。

  2. Tkinter 窗口不会消失,尽管调用了

    withdraw()

这似乎是 Tcl/Tk 中的一个错误。但我不认为它会很快被修复,因为这需要一个新功能来创建一个未映射状态的主窗口并在以后手动映射它,但这种用例非常罕见。

你无法解决第一个问题。但是您可以通过使用透明窗口来解决第二个问题,如下例所示。

from tkinter import Tk
root = Tk()
root.config(background = 'systemTransparent')
root.wm_overrideredirect(True)
root.wm_attributes('-transparent', True)
root.withdraw()
root.mainloop()

此外,如果您只需要 Tcl 功能而不需要 Tk 功能,您可以像这样初始化根解释器。

from tkinter import Tk
root = Tk(useTk=False)
...
© www.soinside.com 2019 - 2024. All rights reserved.