tkinter中Toplevel鼠标点击移动的方法

解决办法:

在鼠标按下时记录鼠标的位置和窗口的位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def _on_move( event ):
# self.root_x/y 窗口左上角相对屏幕左上角的距离
offset_x = event.x_root - self.root_x
offset_y = event.y_root - self.root_y

abs_x = self.abs_x + offset_x
abs_y = self.abs_y + offset_y

geo_str="+%s+%s" % (abs_x, abs_y)
self.top.geometry(geo_str)
self.top.bind('<B1-Motion>', _on_move)

def _on_tap(event):
self.root_x, self.root_y=event.x_root, event.y_root
self.abs_x, self.abs_y=self.snip_top.winfo_x(), self.snip_top.winfo_y()
self.top.bind("<Button-1>", _on_tap)
其他窗口同理,如无边框的工具窗口````