拖动无框窗口时,如何在Windows任务栏上停用鼠标移动(<motion-1>)?

时间:2019-03-29 12:28:08

标签: tkinter python-3.7

我正在使用Tkinter在现代GUI的无框架窗口上工作。我已经实现了拖动窗口功能,但是当窗口在任务栏后面时也可以使用,当我试图从任务栏后面恢复窗口时这是一个大问题。因此,当鼠标到达任务栏的边框时,我想禁用拖动功能。

  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

1 个答案:

答案 0 :(得分:1)

当使用overrideredirect()方法使窗口无边界时,该方法会告诉操作系统的窗口管理器,以忽略您的tkinter的GUI窗口。

执行此操作后,Windows管理器现在对您的GUI窗口不承担任何责任。窗口拖动,最小化和最大化,关闭事件等每个任务都应由您手动处理。

现在要解决您在Windows任务栏上的拖动问题,有两种方法。

1)正如我之前告诉您的那样,手动完成所有操作,然后应该手动定位Windows任务栏,然后修改拖动功能以防止鼠标移动到任务栏的边界之后。

2)最简单的方法是将GUI窗口设置为顶层窗口,通过该窗口,您可以将窗口拖到任务栏上,而不会出现任何窗口隐藏问题。

要将窗口设置为顶层,只需设置一个属性,即topmost = True。

    root.attributes('-topmost',1)