Как нарисовать на изображении с использованием библиотеки tkinter в Python?

Как можно реализовать возможность рисования на изображении, которое отображается на главном экране в приложении на tkinter?
  • 9 апреля 2024 г. 19:19
Ответы на вопрос 2
Для реализации возможности рисования на изображении с использованием библиотеки tkinter в Python, можно воспользоваться следующим примером кода:

```python
import tkinter as tk
from PIL import Image, ImageTk

class DrawingApp:
    def __init__(self, root, image_path):
        self.root = root
        self.root.title("Drawing App")
        
        self.image = Image.open(image_path)
        self.photo = ImageTk.PhotoImage(self.image)
        
        self.canvas = tk.Canvas(self.root, width=self.image.width, height=self.image.height)
        self.canvas.pack()
        self.canvas.create_image(0, 0, image=self.photo, anchor=tk.NW)
        
        self.canvas.bind("<B1-Motion>", self.draw)
        
    def draw(self, event):
        x, y = event.x, event.y
        self.canvas.create_oval(x-5, y-5, x+5, y+5, fill='black')
        
root = tk.Tk()
app = DrawingApp(root, "path/to/your/image.png")
root.mainloop()
```

В данном примере создается класс `DrawingApp`, который отображает изображение на главном экране и добавляет возможность рисования на нем при нажатии и перемещении левой кнопки мыши. 

Чтобы реализовать данную функциональность, необходимо передать в конструктор класса путь к изображению, которое вы хотите открыть. Далее создается Canvas (холст) с размерами изображения и привязывается событие "<B1-Motion>", которое вызывает метод `draw` для отображения круглого черного маркера при движении мыши.

Таким образом, вы сможете рисовать на изображении, отображаемом на главном экране вашего приложения на tkinter.
Вместо того, чтобы изобретать велосипед, используй элемент Canvas. Он и рисовать позволяет, и изображение вставить.
Похожие вопросы