如何用tkinter用鼠标绘制矩形
时间: 2023-05-17 14:07:38 浏览: 209
可以使用以下代码:
```python
from tkinter import *
def draw_rect(event):
x1, y1 = event.x, event.y
x2, y2 = (event.x + 50), (event.y + 50)
canvas.create_rectangle(x1, y1, x2, y2, fill="blue")
root = Tk()
canvas = Canvas(root, width=300, height=300)
canvas.pack()
canvas.bind("<Button-1>", draw_rect)
root.mainloop()
```
这个代码使用了 Tkinter 库,创建了一个画布,当鼠标左键按下时,会在画布上绘制一个蓝色的矩形。
相关问题
如何用tkinter用鼠标绘制矩形的程序。当用户在画布上单击时,会在前一一个矩形的角和鼠标单击的位置之间绘制一个新的矩形。第一个矩形的左上角将位于位置(0, 0), 右下角将位于用户第一次单击鼠标的位置。第二个矩形将从用户的第一次鼠标单击延伸到第二次鼠标单击,依此类推。
以下是使用tkinter绘制矩形的程序:
```python
import tkinter as tk
class RectangleDrawer:
def __init__(self, master):
self.master = master
self.canvas = tk.Canvas(master, width=500, height=500)
self.canvas.pack()
self.canvas.bind("<Button-1>", self.draw_rectangle)
self.rectangles = []
self.start_x, self.start_y = None, None
def draw_rectangle(self, event):
if self.start_x is None:
self.start_x, self.start_y = event.x, event.y
else:
end_x, end_y = event.x, event.y
self.rectangles.append(self.canvas.create_rectangle(self.start_x, self.start_y, end_x, end_y))
self.start_x, self.start_y = None, None
root = tk.Tk()
app = RectangleDrawer(root)
root.mainloop()
```
这个程序使用tkinter创建了一个画布,并绑定了鼠标单击事件。当用户单击鼠标时,程序会检查是否已经有起始点,如果没有,则将当前点作为起始点;如果已经有起始点,则使用起始点和当前点创建一个矩形,并将矩形添加到列表中。程序会一直等待用户单击鼠标,直到用户关闭窗口。
如何用tkinter用鼠标绘制矩形的程序。用Python在画布上画画很简单。当用户在画布上单击时,会在前一一个矩形的角和鼠标单击的位置之间绘制一个新的矩形。第一个矩形的左上角将位于位置(0, 0), 右下角将位于用户第一次单击鼠标的位置。第二个矩形将从用户的第一次鼠标单击延伸到第二次鼠标单击,依此类推。
以下是一个用tkinter绘制矩形的程序:
```python
import tkinter as tk
class RectangleDrawer:
def __init__(self, master):
self.master = master
self.canvas = tk.Canvas(master, width=500, height=500)
self.canvas.pack()
self.canvas.bind("<Button-1>", self.on_click)
self.rectangles = []
self.current_rectangle = None
def on_click(self, event):
if self.current_rectangle is None:
self.current_rectangle = [event.x, event.y, event.x, event.y]
else:
self.rectangles.append(self.current_rectangle)
self.current_rectangle = None
self.draw_rectangles()
def draw_rectangles(self):
self.canvas.delete("all")
for rectangle in self.rectangles:
self.canvas.create_rectangle(rectangle[0], rectangle[1], rectangle[2], rectangle[3])
if self.current_rectangle is not None:
self.canvas.create_rectangle(self.current_rectangle[0], self.current_rectangle[1], self.current_rectangle[2], self.current_rectangle[3])
root = tk.Tk()
app = RectangleDrawer(root)
root.mainloop()
```
这个程序创建了一个窗口和一个画布,当用户单击画布时,程序会在画布上绘制一个矩形。程序使用一个列表来存储所有已绘制的矩形,并使用一个变量来存储当前正在绘制的矩形。当用户单击画布时,程序会将当前正在绘制的矩形添加到列表中,并将当前正在绘制的矩形重置为None。程序还定义了一个draw_rectangles函数,用于在画布上绘制所有已绘制的矩形和当前正在绘制的矩形。
阅读全文