python手势九宫格密码用tkinter
时间: 2023-08-10 16:56:22 浏览: 170
基于python tkinter的密码管理系统
如果你想实现一个手势九宫格密码的界面,可以借助tkinter的Canvas组件来实现。下面是一个简单的示例代码:
```python
import tkinter as tk
class GesturePasswordApp:
def __init__(self, master):
self.master = master
self.master.title("手势九宫格密码")
self.canvas = tk.Canvas(self.master, width=300, height=300)
self.canvas.pack()
self.canvas.bind("<B1-Motion>", self.on_drag)
self.passcode = []
self.lines = []
self.create_grid()
def create_grid(self):
for row in range(3):
for col in range(3):
x1 = col * 100 + 50
y1 = row * 100 + 50
x2 = x1 + 50
y2 = y1 + 50
self.canvas.create_oval(x1, y1, x2, y2, fill="white", outline="black")
def on_drag(self, event):
x = event.x // 100 * 100 + 75
y = event.y // 100 * 100 + 75
if (x, y) not in self.passcode:
self.passcode.append((x, y))
self.canvas.create_oval(x - 25, y - 25, x + 25, y + 25, fill="blue", outline="black")
if len(self.passcode) > 1:
prev_x, prev_y = self.passcode[-2]
line = self.canvas.create_line(prev_x, prev_y, x, y, fill="blue")
self.lines.append(line)
def clear(self):
self.canvas.delete("all")
self.create_grid()
self.passcode = []
for line in self.lines:
self.canvas.delete(line)
self.lines = []
root = tk.Tk()
app = GesturePasswordApp(root)
root.mainloop()
```
在这个示例中,我们创建了一个名为`GesturePasswordApp`的类,该类继承自tkinter的`Tk`类。通过在`Canvas`上绑定鼠标拖动事件`<B1-Motion>`,我们可以捕捉到用户的手势输入。在`on_drag`方法中,我们根据鼠标位置绘制蓝色的圆形,并连接前后两个圆形之间的线条。密码的坐标点存储在`passcode`列表中,连接的线条存储在`lines`列表中。
运行代码后,你可以在窗口中拖动鼠标,绘制手势图案。每次绘制完成后,你可以清除密码并重新开始。请注意,这只是一个简单的示例,实际应用中可能需要更复杂的逻辑和界面设计。
阅读全文