Une bibliothèque pour écrire des programmes GUI en Python Tkinter. Dans cette bibliothèque, vous pouvez dessiner une image en utilisant le canevas à l'intérieur.
Je pense que chaque être humain a la possibilité de dessiner une image à l'aide de Canvas, mais je ne pourrais pas le savoir clairement même si j'ai recherché le programme pour obtenir les informations écrites dans Canvas à l'heure définie. J'écrirai un programme qui servira également de mémorandum.
À propos, le programme lui-même de dessiner une image à l'aide de Canvas renvoyé au site suivant. Tracez une ligne sur le canevas Python avec la souris
#!/usr/bin/env python
# -*- coding: utf8 -*-
import tkinter
import time
from PIL import Image, ImageDraw
class Application(tkinter.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title('Measure the time to draw')
self.create_variables()
self.create_widgets()
self.pack()
def create_widgets(self):
self.draw_canvas = tkinter.Canvas(self, bg='white', width=self.img_size[0], height=self.img_size[1])
self.draw_canvas.grid(row=1, column=0, columnspan=4)
self.draw_canvas.bind('<Button-1>', self.start)
self.draw_canvas.bind('<B1-Motion>', self.paint)
self.draw_canvas.bind('<ButtonRelease-1>', self.reset)
def create_variables(self):
self.img_size = (600, 600)
self.old_x, self.old_y = None, None
self.color = 'black'
self.pen_width = 5.0
self.im = Image.new('RGB', self.img_size, 'white')
self.draw = ImageDraw.Draw(self.im)
self.tick_time = 30
self.timer_id = None
self.start_time = None
#methods
def start(self, event):
if self.timer_id is None:
self.timer_start()
self.draw_canvas.create_line(event.x, event.y, event.x, event.y, width=self.pen_width, fill=self.color, capstyle="round", smooth=True, splinesteps=36)
self.draw.line((event.x, event.y, event.x, event.y), fill=self.color, width=int(self.pen_width))
self.old_x, self.old_y = event.x, event.y
def paint(self, event):
if self.old_x and self.old_y:
self.draw_canvas.create_line(self.old_x, self.old_y, event.x, event.y, width=self.pen_width, fill=self.color, capstyle="round", smooth=True, splinesteps=36)
self.draw.line((self.old_x, self.old_y, event.x, event.y), fill=self.color, width=int(self.pen_width))
self.old_x, self.old_y = event.x, event.y
def reset(self, event):
self.old_x, self.old_y = None, None
self.timer_reset()
#timer
def timer_start(self):
if self.timer_id is not None:
self.after_cancel(self.timer_id)
self.start_time = time.time()
self.timer_id = self.after(self.tick_time, self.timer_count)
def timer_count(self):
t = time.time() - self.start_time
x = self.old_x if self.old_x is not None else -1
y = self.old_y if self.old_y is not None else -1
print("temps écoulé:%f ,Position X%d,Position Y%d" % (t, x, y))
self.timer_id = self.after(self.tick_time, self.timer_count)
def timer_reset(self):
if self.timer_id is None:
return
self.after_cancel(self.timer_id)
self.timer_id = None
if __name__ == "__main__":
root = tkinter.Tk()
app = Application(master=root)
app.mainloop()
Lorsque vous l'exécutez, vous verrez une toile pour le dessin. Lorsque je dessine une image sur cette toile avec la souris, cela devient un terminal
Les fonctions liées au comportement du minuteur sont définies par _timer_start () _, _timer_count () _, _timer_reset () _. Ces fonctions sont appelées selon _start () _, _reset () _ lié à Canvas, et _timer_count () _ est désormais appelée à chaque fois que définie dans la variable tick_time par la fonction _after () _. On suppose que les informations de dessin de
C'était mon premier article à écrire.
J'étais juste en train d'écrire des lettres et d'étudier comment les écrire, alors j'espère que ce programme sera utile dans les situations où vous souhaitez obtenir des informations manuscrites en ligne.
Tracez une ligne sur le canevas Python avec la souris [tkinter - .after() - RIP Tutorial] (https://riptutorial.com/ja/tkinter/example/22870/-after--)
Recommended Posts