【发布时间】:2019-09-16 00:23:21
【问题描述】:
我正在尝试创建一个屏幕“幕布”,它会挡住除鼠标光标附近以外的部分屏幕。
在 Windows 上,使用 root.wm_attributes("-topmost", "true") 使窗口保持在顶部,即使我专注于另一个应用程序,完美。但是,在 MacOS 上运行代码时,如果窗口失去焦点,它将不会保持在最上面。
与-topmost 窗口管理器属性等效的MacOS 是什么,它将始终保持窗口在顶部,而不管焦点如何?
import tkinter as tk
class TransparentWindow(tk.Toplevel):
"""
This class is just a Toplevel window.
"""
def __init__(self, background="white", opacity=0.7):
super(TransparentWindow, self).__init__()
#self.master = master
self.configure(background=background)
self.overrideredirect(True)
self.wm_attributes("-alpha", opacity)
self.wm_attributes("-topmost", "true")
self.lift()
if __name__ == '__main__':
root = tk.Tk()
TransparentWindow()
root.mainloop()
在 High Sierra 虚拟机中运行此代码会导致在选择另一个窗口时 Toplevel 不会始终位于顶部。
【问题讨论】:
-
这不是我的要求。它是 Stackoverflow 的要求:)。更短的代码更容易测试,使用 MacOS 的人可以运行它来确认所有 MacOS 上的问题。
-
好的,一切都好。我用一些细节编辑了这个问题。
标签: python macos user-interface tkinter window