Tangram and similar puzzles
Revision | ab4615d2238e65a1fd292036dd2b4b1a11d7b153 (tree) |
---|---|
Time | 2023-10-27 00:23:50 |
Author | Antoon Pardon <antoon.pardon@vub....> |
Commiter | Antoon Pardon |
gtk mouse move events
@@ -1,6 +1,9 @@ | ||
1 | 1 | from browser import doc |
2 | 2 | from linalg import Pnt |
3 | 3 | |
4 | +from math import pi | |
5 | +TAU = 2 * pi | |
6 | + | |
4 | 7 | class PuzzleWindow: |
5 | 8 | def __init__(self, pieces): |
6 | 9 | print("PuzzleWindow started") |
@@ -31,7 +34,7 @@ | ||
31 | 34 | ctx = self.canvas.getContext("2d") |
32 | 35 | ctx.beginPath() |
33 | 36 | ctx.fillStyle = "#040" |
34 | - ctx.arc(*position, 10, 0, 6.2832) | |
37 | + ctx.arc(*position, 10, 0, TAU) | |
35 | 38 | ctx.fill() |
36 | 39 | self.label.text = "Button %s pressed at %s; offset = %s" % (button_nr, position, self.offset) |
37 | 40 |
@@ -33,24 +33,30 @@ | ||
33 | 33 | self.add(column) |
34 | 34 | self.connect('button_press_event', self.button_press) |
35 | 35 | self.connect('button_release_event', self.button_release) |
36 | - self.connect('scroll_event', self.scroll) | |
36 | + self.connect('scroll_event', self.wheel) | |
37 | 37 | self.connect("delete-event", self.quit) |
38 | 38 | |
39 | 39 | def button_press(self, widget, event): |
40 | 40 | position = event.get_coords() |
41 | 41 | button_nr = event.get_button()[1] |
42 | + self.motion_id = self.connect('motion_notify_event', self.mouse_move) | |
42 | 43 | self.label.set_text("Button %s pressed at %s" % (button_nr, position)) |
43 | 44 | |
44 | 45 | def button_release(self, widget, event): |
45 | 46 | position = event.get_coords() |
46 | 47 | button_nr = event.get_button()[1] |
48 | + self.disconnect(self.motion_id) | |
47 | 49 | self.label.set_text("Button %s released at %s" % (button_nr, position)) |
48 | 50 | |
49 | - def scroll(self, widget, event): | |
51 | + def mouse_move(self, widget, event): | |
52 | + position = event.get_coords() | |
53 | + self.label.set_text("Mouse moved to %s" % (position,)) | |
54 | + | |
55 | + def wheel(self, widget, event): | |
50 | 56 | print(event) |
51 | 57 | position = event.get_coords() |
52 | 58 | button_nr = event.get_button()[1] |
53 | - self.label.set_text("Button %s scrolled at %s" % (button_nr, position)) | |
59 | + self.label.set_text("Wheel scrolled at %s" % (position,)) | |
54 | 60 | |
55 | 61 | @staticmethod |
56 | 62 | def quit(self, *args): |