【发布时间】:2011-05-02 14:24:30
【问题描述】:
关于如何创建允许用户通过鼠标拖动无边框窗口的事件绑定的任何建议,例如。用overridedirect(1)创建的窗口?
用例:我们想创建一个浮动工具栏/调色板窗口(无边框),我们的用户可以在他们的桌面上拖动。
这是我的想法(伪代码):
window.bind( '<Button-1>', onMouseDown )捕捉鼠标的初始位置。window.bind( '<Motion-1>', onMouseMove )跟踪鼠标开始移动后的位置。计算鼠标移动了多少并计算
newX、newY的位置。使用
window.geometry( '+%d+%d' % ( newX, newY ) )移动窗口。
Tkinter 是否公开了足够的功能以允许我实现手头的任务?或者有没有更简单/更高层次的方法来实现我想做的事情?
【问题讨论】:
-
这听起来与您在上一个问题中所问的完全相反,即创建一个无法移动或调整大小的窗口。如果您只想要一个无法调整大小的窗口,请修复窗口最小和最大大小,并让用户通过标题栏移动窗口。还是我不明白你想要完成什么?
-
上一个问题的用例是创建一个停靠窗口效果,例如。窗口停靠在用户桌面上的某个位置。 Tkinter 公开了 .minsize() 和 .maxsize() 窗口方法,但没有用于控制桌面上窗口 x、y 位置的等效方法。你是对的 - 上面的问题几乎与我之前的问题相反。不同之处在于用例,例如。我的新问题是基于用户在桌面上拖动小型浮动工具栏(“调色板”)窗口的需要......
-
... 续上:这些浮动工具栏不需要位置限制。出于美学原因,我们希望这些浮动工具栏窗口/调色板是没有边框的窗口(我们将自己添加边框外观)。感谢您的帮助!
标签: python windows user-interface window tkinter