设置成无边框后 还要可以拖动
时间: 2023-05-23 10:04:15 浏览: 73
A:要实现这个功能,可以使用鼠标事件来实现拖动。具体步骤如下:
1. 添加鼠标按下事件,记录鼠标按下时鼠标位置和窗口位置的差值;
2. 添加鼠标移动事件,根据鼠标位置和窗口位置的差值计算新的窗口位置,并将窗口移动到新的位置;
3. 添加鼠标释放事件,删除鼠标按下时记录的差值。
代码示例:
``` python
import tkinter as tk
class DragWindow(tk.Tk):
def __init__(self):
super().__init__()
# 设置窗口属性
self.overrideredirect(True)
self.geometry("300x200+200+200")
# 添加拖动功能
self.mouse_pos = None
self.window_pos = None
self.bind("<Button-1>", self.on_mouse_down)
self.bind("<B1-Motion>", self.on_mouse_move)
self.bind("<ButtonRelease-1>", self.on_mouse_up)
def on_mouse_down(self, event):
self.mouse_pos = (event.x_root, event.y_root)
self.window_pos = (self.winfo_x(), self.winfo_y())
def on_mouse_move(self, event):
if self.mouse_pos and self.window_pos:
dx = event.x_root - self.mouse_pos[0]
dy = event.y_root - self.mouse_pos[1]
new_x = self.window_pos[0] + dx
new_y = self.window_pos[1] + dy
self.geometry(f"+{new_x}+{new_y}")
def on_mouse_up(self, event):
self.mouse_pos = None
self.window_pos = None
if __name__ == "__main__":
app = DragWindow()
app.mainloop()
```
这是一个继承自`tk.Tk`的窗口类`DragWindow`,其中使用了`overrideredirect(True)`来隐藏窗口的边框,并添加了鼠标事件来实现窗口的拖动。