Skip to content

Commit 321f7a9

Browse files
committed
tkinter
1 parent 9f1440c commit 321f7a9

File tree

4 files changed

+211
-0
lines changed

4 files changed

+211
-0
lines changed

tkinter/__BIND__/mouse-wheel/main.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import tkinter as tk
2+
3+
# --- functions ---
4+
5+
def mouse_wheel(event):
6+
global number
7+
8+
# respond to Linux or Windows wheel event
9+
if event.num == 5 or event.delta == -120:
10+
number -= 1
11+
if event.num == 4 or event.delta == 120:
12+
number += 1
13+
14+
label['text'] = number
15+
16+
# --- main ---
17+
18+
number = 0
19+
20+
root = tk.Tk()
21+
22+
label = tk.Label(root, text="0")
23+
label.pack(ipadx=15, ipady=5)
24+
25+
# Windows
26+
root.bind("<MouseWheel>", mouse_wheel)
27+
# Linux
28+
root.bind("<Button-4>", mouse_wheel)
29+
root.bind("<Button-5>", mouse_wheel)
30+
31+
root.mainloop()
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/usr/bin/env python3
2+
3+
import tkinter as tk
4+
5+
# --- functions ---
6+
7+
def move(diff_x, diff_y):
8+
global centerx
9+
global centery
10+
11+
for item in items:
12+
canvas.move(item, diff_x, diff_y)
13+
14+
centerx += diff_x
15+
centery += diff_y
16+
17+
for item in lines:
18+
x1, y1, x2, y2 = canvas.coords(item)
19+
canvas.coords(item, x1, y1, centerx, centery)
20+
21+
def move_item(event):
22+
global old_x
23+
global old_y
24+
diff_x = event.x - old_x
25+
diff_y = event.y - old_y
26+
move(diff_x, diff_y)
27+
old_x = event.x
28+
old_y = event.y
29+
30+
def move_horizontal(event):
31+
global old_x
32+
diff_x = event.x - old_x
33+
move(diff_x, 0)
34+
old_x = event.x
35+
36+
def move_vertical(event):
37+
global old_y
38+
diff_y = event.y - old_y
39+
move(0, diff_y)
40+
old_y = event.y
41+
42+
def save_position(event):
43+
global old_x
44+
global old_y
45+
old_x = event.x
46+
old_y = event.y
47+
48+
def create_objects(event=None):
49+
global centerx
50+
global centery
51+
global lines
52+
global items
53+
54+
w = canvas.winfo_width()
55+
h = canvas.winfo_height()
56+
centerx = w//2
57+
centery = h//2
58+
59+
lines = [
60+
canvas.create_line(0, 0, centerx, centery),
61+
canvas.create_line(0, h, centerx, centery),
62+
canvas.create_line(w, 0, centerx, centery),
63+
canvas.create_line(w, h, centerx, centery),
64+
]
65+
66+
# create objects
67+
items = [
68+
canvas.create_rectangle(centerx-50, centery-50, centerx-100, centery-100, fill='red'),
69+
canvas.create_rectangle(centerx-50, centery+50, centerx-100, centery+100, fill='blue'),
70+
canvas.create_rectangle(centerx+50, centery-50, centerx+100, centery-100, fill='yellow'),
71+
canvas.create_rectangle(centerx+50, centery+50, centerx+100, centery+100, fill='green'),
72+
]
73+
74+
75+
# --- main ---
76+
77+
old_x = 0
78+
old_y = 0
79+
80+
root = tk.Tk()
81+
82+
83+
canvas = tk.Canvas(root, width=500, height=300, bg='gray')
84+
canvas.pack(fill='both', expand=True)
85+
86+
canvas.bind("<Button-1>", save_position)
87+
canvas.bind("<B1-Motion>", move_item)
88+
canvas.bind("<Shift-B1-Motion>", move_horizontal)
89+
canvas.bind("<Control-B1-Motion>", move_vertical)
90+
91+
root.after(100, create_objects) # run later so `tkinter` will already know window size
92+
93+
root.mainloop()
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env python3
2+
3+
import tkinter as tk
4+
5+
# --- functions ---
6+
7+
def move_item(event):
8+
global old_x
9+
global old_y
10+
diff_x = event.x - old_x
11+
diff_y = event.y - old_y
12+
for item in items:
13+
canvas.move(item, diff_x, diff_y)
14+
old_x = event.x
15+
old_y = event.y
16+
17+
def move_horizontal(event):
18+
global old_x
19+
diff_x = event.x - old_x
20+
for item in items:
21+
canvas.move(item, diff_x, 0)
22+
old_x = event.x
23+
24+
def move_vertical(event):
25+
global old_y
26+
diff_y = event.y - old_y
27+
for item in items:
28+
canvas.move(item, 0, diff_y)
29+
old_y = event.y
30+
31+
def save_position(event):
32+
global old_x
33+
global old_y
34+
old_x = event.x
35+
old_y = event.y
36+
37+
# --- main ---
38+
39+
old_x = 0
40+
old_y = 0
41+
# init
42+
root = tk.Tk()
43+
44+
# create canvas
45+
canvas = tk.Canvas(root, width=500, height=300)
46+
canvas.pack()
47+
48+
# create objects
49+
items = [
50+
canvas.create_rectangle(100, 100, 130, 130, fill='red'),
51+
canvas.create_rectangle(200, 100, 230, 130, fill='blue'),
52+
canvas.create_rectangle(100, 200, 130, 230, fill='yellow'),
53+
]
54+
55+
canvas.bind("<Button-1>", save_position)
56+
canvas.bind("<B1-Motion>", move_item)
57+
canvas.bind("<Shift-B1-Motion>", move_horizontal)
58+
canvas.bind("<Control-B1-Motion>", move_vertical)
59+
# start program
60+
root.mainloop()
61+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env python3
2+
3+
# date: 2020.01.14
4+
5+
import tkinter as tk
6+
import time
7+
8+
# --- functions ---
9+
10+
def update_time():
11+
label['text'] = time.strftime('%Y.%m.%d %H:%M:%S')
12+
13+
# run update_time again after 1000ms (1s)
14+
root.after(1000, update_time)
15+
16+
# --- main ---
17+
18+
root = tk.Tk()
19+
20+
label = tk.Label(root)
21+
label.pack()
22+
23+
# run update_time first time
24+
update_time()
25+
26+
root.mainloop()

0 commit comments

Comments
 (0)