关于如何创建允许用户鼠标拖动无边框窗口(例如使用overridedirect(1)
创建的窗口)的事件绑定的任何建议?
用例:我们希望创建一个浮动的工具栏/调色板窗口(无边框),用户可以在桌面上拖动它。
下面是我的想法(伪代码):
window.bind( '<Button-1>', onMouseDown )
捕获鼠标的初始位置。
window.bind( '<Motion-1>', onMouseMove )
跟踪鼠标开始移动时的位置。
计算鼠标移动了多少并计算newX
,newY
位置。
使用window.geometry( '+%d+%d' % ( newX, newY ) )
移动窗口。
Tkinter是否公开了足够的功能来允许我实现手头的任务?或者有更简单/更高级的方法来实现我想要做的事情吗?
是的,Tkinter公开了足够的功能来实现这一点,不,没有更简单/更高级的方法来实现您想要的。你的想法很对。
下面是一个例子:
试试这个,肯定管用
创建用于移动窗口的事件函数:
def movewindow(事件): root.geometry('+{0}+{1}'。格式(event.x_root,event.y_root))
绑定窗口:
根。绑定('',移动窗口)
现在你可以触摸窗口并拖动
此代码与Bryan的解决方案相同,但它不使用overridedirect。
它是用python 3.7、Debian GNU/Linux 10(buster)、gnome3.30进行测试的
相关问题 更多 >
编程相关推荐