Следующий фрагмент кода должен сообщать о событиях щелчков мыши, но о событиях Bx-Up не сообщается ... Это ошибка или я что-то упустил?
#!/usr/bin/python3
# coding: UTF-8
# Testing mouse events in tkinter
import tkinter as tk
class MyMouse:
def __init__(self):
def init_vars():
self.padx, self.pady = 40, 40
self.xsize, self.ysize = 800, 600
def create_window():
def create_canvas(wdth, hght):
canvas = tk.Canvas(mywin, width=wdth, height=hght, bg='white')
canvas.bind(sequence='<1>', func=self.b1)
canvas.bind(sequence='<B1-Motion>', func=self.b1_motion)
canvas.bind(sequence='<B1-Up>', func=self.b1_up)
canvas.bind(sequence='<2>', func=self.b2)
canvas.bind(sequence='<B2-Motion>', func=self.b2_motion)
canvas.bind(sequence='<B2-Up>', func=self.b2_up)
canvas.bind(sequence='<3>', func=self.b3)
canvas.bind(sequence='<B3-Motion>', func=self.b3_motion)
canvas.bind(sequence='<B3-Up>', func=self.b3_up)
return canvas
mywin = tk.Tk()
mywin.title("Testing mouse events in tkinter")
mywin.canvas = create_canvas(self.xsize, self.ysize)
mywin.canvas.pack(side=tk.TOP, padx=self.padx, pady=self.pady,
expand=True, fill=tk.BOTH)
return mywin
init_vars()
self.mywin = create_window()
self.mywin.mainloop()
def b1(self, event):
print('b1 called', (event.x, event.y), flush=True)
def b1_motion(self, event):
print('b1_motion called', (event.x, event.y), flush=True)
def b1_up(self, event):
print('b1_up called', (event.x, event.y), flush=True)
def b2(self, event):
print('b2 called', (event.x, event.y), flush=True)
def b2_motion(self, event):
print('b2_motion called', (event.x, event.y), flush=True)
def b2_up(self, event):
print('b2_up called', (event.x, event.y), flush=True)
def b3(self, event):
print('b3 called', (event.x, event.y), flush=True)
def b3_motion(self, event):
print('b3_motion called', (event.x, event.y), flush=True)
def b3_up(self, event):
print('b3_up called', (event.x, event.y), flush=True)
MyMouse()
Отчеты:
b1 called (452, 238)
b1 called (452, 238)
b1 called (452, 238)
b1 called (452, 238)
b2 called (452, 238)
b2 called (452, 238)
b3 called (452, 238)
b3 called (452, 238)
b3 called (452, 238)
b1 called (381, 242)
b1_motion called (381, 243)
b1_motion called (399, 255)
b1_motion called (410, 262)
b1_motion called (413, 263)
b2 called (415, 264)
Комментарии: Я считаю, что предыдущий вопрос в значительной степени самодостаточен, но программа не позволит мне добавить еще несколько комментариев. Поэтому, пожалуйста, задавайте вопросы, чтобы я мог добавлять больше комментариев по мере необходимости. Этот пост о менеджерах событий, которые никогда не называются ...