如何在<Motion-1>拖动无框窗口时停用窗口任务栏上的鼠标运动 ()?



我正在使用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

当您使用 overrideredirect(( 方法使窗口无边框时,此方法会向操作系统的窗口管理器表示忽略 tkinter 的 GUI 窗口。

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

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

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

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

要使窗口成为顶级,您应该设置一个属性,即最顶层 = True。

    root.attributes('-topmost',1)

最新更新