我有一个色调顶级窗口,我想在没有框架或标题栏的情况下打开它,并且略微透明,然后在鼠标移动到窗口上时呈实心。 为此,我同时使用Toplevel.overrideredirect(True)
和Toplevel.attributes('-alpha', 0.75)
。 我为此将<Enter>
和<Leave>
事件绑定到一个函数。
这些在单独尝试时都可以工作,但是当我将覆盖重定向设置为 True 时,鼠标进入和离开的绑定不再有效。 当我单击窗口时,然后当我移动鼠标时,绑定会调用,但在光标进入或离开窗口时不会调用。
我也尝试将它们绑定到框架,但没有进一步的运气。
toplevel = Toplevel(root)
toplevel.overrideredirect(True)
toplevel.attributes('-alpha', 0.75)
toplevel.bind('<Enter>', lambda x: mouseMovement(command='enter'))
toplevel.bind('<Leave>', lambda x: mouseMovement(command='leave'))
def mouseMovement(command):
print('Callback: ' + command)
if command == 'enter':
toplevel.attributes('-alpha', 1)
elif command == 'leave':
toplevel.attributes('-alpha', 0.75)
我尝试在这里使用类似问题的答案,但这会导致一个具有所有标准操作系统装饰的窗口,但关闭、最小化和放大按钮被简单地禁用。 有没有办法可以摆脱标题栏,但仍然保留我的绑定?
在 X Windows 上,这可以使用适当的扩展窗口管理器提示来处理,以请求窗口管理器以所需的方式装饰顶层。这听起来像一个启动屏幕窗口,因此"启动"在这里可能是合适的。为此,请使用 wm_attributes -type 参数,例如:
toplevel.wm_attributes('-type', 'splash')
将具有与初始屏幕对话框一样装饰的顶层,这通常意味着没有标题栏。如果将其应用于已映射的窗口,则需要撤回并重新映射(调用wm_deiconify),以使窗口管理器将其设置应用于新的提示类型。