强制 Tkinter 窗口停留在全屏顶部 - Windows 10

Posted

技术标签:

【中文标题】强制 Tkinter 窗口停留在全屏顶部 - Windows 10【英文标题】:Forcing Tkinter window to stay on top of fullscreen - Windows 10 【发布时间】:2016-10-23 08:19:55 【问题描述】:

我有一个 Tkinter 窗口,我需要控制其他所有内容 - 包括全屏窗口。

我尝试过的事情:

root.attributes('-topmost', True) 在 mainloop 之前 - 不起作用

类内的self.root.wm_attributes("-topmost", True) - 不起作用

root.overrideredirect(True) 在 mainloop 之前 - 仅适用于 Linux

root.lift() 在 mainloop 之前 - 不起作用

最后,我设置root.lift() 被重复调用:

class TestingGUI:
    def __init__(self, root):
        self.root = root
        self.EnsureTop()

    def EnsureTop(self):
        root.lift()
        root.after(5000, self.EnsureTop)`

从某种意义上说,它成功地将窗口提升到我手动切换为“始终位于顶部”的任何其他窗口之上,例如使用Dexpot,但至关重要的是,它不适用于全屏应用程序。

具体来说,我需要在游戏中显示它,因为它是游戏中的音乐播放器。对于需要重复使用某些命令以确保再次将窗口调用到顶部的解决方案,我可以接受。

【问题讨论】:

对不起,如果这个评论有点跑题了——这个问题本身很好——但我无法理解人们在 2016 年使用 Tkinter。你为什么不使用 wxWidgets、PySide、PyQt 或PyGtk? blogs.msdn.microsoft.com/oldnewthing/20110310-00/?p=11253 @linusg 它是 Python 的一部分,它在 Linux 和我做过的其他小型项目上运行良好。当您发表评论时,您有什么建议? 查看更新的评论 @TessellatingHeckler 我不需要我的应用程序在所有可能的情况下都处于领先地位,仅适用于一小部分应用程序(Steam 游戏)。我很确定他们不会参与想要上位的猫捉老鼠游戏。 【参考方案1】:

正如 TessellatingHeckler 在 cmets 中指出的那样,不可能确保一个窗口停留在另一个全屏窗口之上。我通过组合循环 root.lift() 并要求我的用户在无边界窗口中运行他们的应用程序来解决这个问题。

【讨论】:

以上是关于强制 Tkinter 窗口停留在全屏顶部 - Windows 10的主要内容,如果未能解决你的问题,请参考以下文章

全屏 Python TKinter 或 wxPython 窗口,但“停留在所有窗口的底部”?

创建一个即使在全屏模式下也保持在顶部的新窗口(Linux 上的 Qt)

Qt全屏窗口隐藏Win8/10触摸键盘

在 GTK+ 中让窗口显示在全屏窗口上方

特定窗口(或所有窗口)前面的 Tkinter 窗口

为啥窗口背景在全屏时保持黑色?