在python中用tkinter创建一手写板并将每一个画布中的像素以0与1矩阵的形式保存在txt中
时间: 2024-05-10 19:20:50 浏览: 194
以下是一个简单的手写板程序,可以通过鼠标拖动在画布上绘制图形。在保存时,将画布上的像素以0和1的形式保存在txt文件中。
```
from tkinter import *
# 定义画布大小和像素大小
CANVAS_SIZE = 280
PIXEL_SIZE = 10
# 创建画布
root = Tk()
canvas = Canvas(root, width=CANVAS_SIZE, height=CANVAS_SIZE, bg="white")
canvas.pack()
# 定义画布上的像素矩阵
pixels = [[0] * (CANVAS_SIZE // PIXEL_SIZE) for _ in range(CANVAS_SIZE // PIXEL_SIZE)]
# 定义绘制函数
def draw(event):
x, y = event.x, event.y
x_idx, y_idx = x // PIXEL_SIZE, y // PIXEL_SIZE
pixels[y_idx][x_idx] = 1
canvas.create_rectangle(x_idx * PIXEL_SIZE, y_idx * PIXEL_SIZE,
x_idx * PIXEL_SIZE + PIXEL_SIZE, y_idx * PIXEL_SIZE + PIXEL_SIZE,
fill="black")
# 绑定鼠标拖动事件
canvas.bind("<B1-Motion>", draw)
# 定义保存函数
def save():
with open("pixels.txt", "w") as f:
for row in pixels:
f.write(" ".join(str(p) for p in row) + "\n")
print("Saved.")
# 创建保存按钮
save_btn = Button(root, text="Save", command=save)
save_btn.pack()
root.mainloop()
```
在程序中,我们首先定义了画布的大小和像素大小,然后创建了一个空的像素矩阵。在绘制函数中,当鼠标拖动时,我们根据鼠标位置计算出对应的像素坐标,并将像素矩阵中对应的值设为1,同时在画布上绘制黑色矩形表示该像素。
在保存函数中,我们将像素矩阵中的值保存到txt文件中。每一行对应一个像素行,行中的数字用空格分隔。
最后,我们创建了一个保存按钮,点击该按钮即可将像素矩阵保存到文件中。
阅读全文