Как перетащить текст, который печатается поверх изображения (на холсте) с помощью мыши в Python?

Вы можете попробовать http://www.texotela.co.uk/code/jquery/numeric/

В этой теме упоминается тот же плагин вместе с кучей других вещей, которые вы могли бы попробовать.

-1
задан Bhavesh Mevada 26 February 2019 в 13:59
поделиться

1 ответ

Quick Disclaimer: у меня нет большого опыта работы с PIL, поэтому я не знаю, как удалить уже нарисованный текст. Может быть, вы можете понять это самостоятельно. Но кроме этого, я знаю кое-что о tkinter. Моя идея заключается в следующем:

Привязать функцию к событию <B1-motion> (кнопка 1 удерживается и перемещается), которая будет постоянно определять положение мыши внутри окна и рисовать новый текст при этом. положение, удаляя предыдущий текст.

    import...
    ...

    def func_image():
        img_window = tk.Toplevel()
        ...
        ...
        draw = ImageDraw.Draw(photo)
        draw.text((50,50),text=text.get(),fill='red',font=fonty)
        ...
        def move_text(event):
            # here you would delete your previous text
            x = event.x
            y = event.y
            draw.text((x,y),text=text.get(),fill='red',font=fonty

        img_window.bind('<B1-Motion>', move_text)

При этом, я думаю, было бы лучше использовать Canvas.create_text (подробнее на effbot.org ), чтобы написать свой текст на изображении. Это действительно легко перетащить текст на Canvas, вот небольшой пример:

import tkinter as tk

root = tk.Tk()

def change_position(event):
    x = event.x
    y = event.y

    # 20x20 square around mouse to make sure text only gets targeted if the mouse is near it
    if text in c.find_overlapping(str(x-10), str(y-10), str(x+10), str(y+10)):
        c.coords(text, x, y)  # move text to mouse position

c = tk.Canvas(root)
c.pack(anchor='n')

text = c.create_text('10', '10', text='test', fill='red', font=('arial', 18))  # you can define all kinds of text options here
c.bind("<B1-Motion>", change_position)

root.mainloop()
0
ответ дан Flob 26 February 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: