当我拖动无框 window 时,如何停用 windows 任务栏上的鼠标移动 (<Motion-1>)?
How can I deactivate mouse motion (<Motion-1>) on windows taskbar while I am dragging my frameless window?
我正在使用 Tkinter 为现代 GUI 开发无框架 window。我已经实现了拖动 window 功能,但是当 window 在任务栏后面时它也可以工作,当我试图从任务栏后面恢复我的 window 时这是一个大问题。所以我想在鼠标到达任务栏的边框时禁用拖动功能。
def drag(event):
act = str(event.type)
if act == 'Motion':
global _app
#_app is a reference to root in other py file
t = _app.geometry().split('+')[1:]
xval = int(t[0])
yval = int(t[1])
_app.geometry('+'+
str(xval + event.x -400)+
'+'+str(yval + event.y -20))
#window size is fixed i.e. 800x480
当您使用 overrideredirect() 方法创建 window border-less 时,此方法告诉操作系统的 windows 管理器忽略您的 tkinter 的 GUI window。
当您这样做时,windows 管理员现在对您的 GUI window 不承担任何责任。 window 拖动、最小化和最大化、关闭事件等每个任务都应由您手动处理。
现在解决你在windows任务栏上的拖动问题有两种方法。
1) 正如我之前告诉你的那样,手动完成所有操作,那么你应该手动定位你的 windows 任务栏,然后修改你的拖动功能以防止你的鼠标移动到任务栏的边界之后。
2) 最简单的方法是将您的 GUI window 设置为顶级 window,这样您就可以将 window 拖到任务栏上,而无需任何 window 隐藏问题
要成为 window 顶级,您只需设置一个属性,即 topmost = True。
root.attributes('-topmost',1)
我正在使用 Tkinter 为现代 GUI 开发无框架 window。我已经实现了拖动 window 功能,但是当 window 在任务栏后面时它也可以工作,当我试图从任务栏后面恢复我的 window 时这是一个大问题。所以我想在鼠标到达任务栏的边框时禁用拖动功能。
def drag(event):
act = str(event.type)
if act == 'Motion':
global _app
#_app is a reference to root in other py file
t = _app.geometry().split('+')[1:]
xval = int(t[0])
yval = int(t[1])
_app.geometry('+'+
str(xval + event.x -400)+
'+'+str(yval + event.y -20))
#window size is fixed i.e. 800x480
当您使用 overrideredirect() 方法创建 window border-less 时,此方法告诉操作系统的 windows 管理器忽略您的 tkinter 的 GUI window。
当您这样做时,windows 管理员现在对您的 GUI window 不承担任何责任。 window 拖动、最小化和最大化、关闭事件等每个任务都应由您手动处理。
现在解决你在windows任务栏上的拖动问题有两种方法。
1) 正如我之前告诉你的那样,手动完成所有操作,那么你应该手动定位你的 windows 任务栏,然后修改你的拖动功能以防止你的鼠标移动到任务栏的边界之后。
2) 最简单的方法是将您的 GUI window 设置为顶级 window,这样您就可以将 window 拖到任务栏上,而无需任何 window 隐藏问题
要成为 window 顶级,您只需设置一个属性,即 topmost = True。
root.attributes('-topmost',1)