@@ -16,21 +16,43 @@ def __init__(self, master, filename, **kwargs):
1616 self .current_rect = - 1
1717 self .blur = 0.0
1818 self .image = Image .open (filename )
19+ if self .image .mode not in ["RGB" , "RGBA" ]:
20+ new = self .image .convert ("RGBA" )
21+ self .image .close ()
22+ self .image = new
1923 self .blurred = self .image .copy ()
2024 self .image_gui = ImageTk .PhotoImage (self .blurred )
2125 kwargs ["width" ] = self .image_gui .width ()
2226 kwargs ["height" ] = self .image_gui .height ()
2327 super ().__init__ (master , ** kwargs )
2428 self .image_id = self .create_image (0 , 0 , image = self .image_gui , anchor = "nw" )
2529 self .bind ("<MouseWheel>" , self .change_blur )
30+ self .timer = 0
31+ self .bind ("<Up>" , self .simulate_scroll )
32+ self .bind ("<Down>" , self .simulate_scroll )
2633 self .bind ("<Button-1>" , self .new_rect )
2734 self .bind ("<B1-Motion>" , self .resize_rect )
2835 self .bind ("<ButtonRelease-1>" , self .create_rect )
2936 self .bind ("<Return>" , self .finish )
3037 self .focus_force ()
3138
39+ def simulate_scroll (self , event ):
40+ if self .timer :
41+ self .timer -= 1
42+ return
43+ class ScrollEvent :
44+ def __init__ (self , num ):
45+ self .num = num
46+ self .delta = 0
47+ if event .keysym == "Up" : event = ScrollEvent (4 )
48+ elif event .keysym == "Down" : event = ScrollEvent (5 )
49+ self .change_blur (event )
50+ self .timer = 3
51+
3252 def change_blur (self , event ):
33- self .blur += 0.5 * (event .delta / 120 )
53+ if event .num == 4 or event .delta == 120 : sign = 1
54+ elif event .num == 5 or event .delta == - 120 : sign = - 1
55+ self .blur += 0.5 * sign
3456 self .blur = max (0.0 , self .blur )
3557 tmp = self .blurred
3658 self .blurred = self .image .filter (ImageFilter .GaussianBlur (self .blur ))
@@ -83,4 +105,4 @@ def get_results(self):
83105 window = tk .Tk ()
84106 editor = Editor (window , "test.png" )
85107 editor .pack ()
86- window .mainloop ()
108+ window .mainloop ()
0 commit comments