forked from marco-c/autowebcompat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
label.py
76 lines (54 loc) · 1.66 KB
/
label.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import argparse
from PIL import ImageTk, Image
from tkinter import Tk, Label
from autowebcompat import utils
labels_directory = "label_persons/"
parser = argparse.ArgumentParser()
parser.add_argument("file_name", action="store")
args = parser.parse_args()
labels = utils.read_labels(labels_directory + args.file_name)
images_to_show = [i for i in utils.get_images() if i not in labels]
current_image = None
root = Tk()
panel1 = Label(root)
panel1.pack(side="left", padx=10)
panel2 = Label(root)
panel2.pack(side="left", padx=10)
def get_new_image():
global current_image
if len(images_to_show) == 0:
root.quit()
return
current_image = images_to_show.pop()
print("data/%s_firefox.png" % current_image)
img = ImageTk.PhotoImage(Image.open("data/%s_firefox.png" % current_image))
panel1.configure(image=img)
panel1.image = img
img = ImageTk.PhotoImage(Image.open("data/%s_chrome.png" % current_image))
panel2.configure(image=img)
panel2.image = img
# The images are the same.
def callback_y(e):
labels[current_image] = 'y'
get_new_image()
# The image are basically the same, except for advertisement or content.
def callback_d(e):
labels[current_image] = 'd'
get_new_image()
# The images are not the same.
def callback_n(e):
labels[current_image] = 'n'
get_new_image()
def callback_skip(e):
get_new_image()
def close(e):
root.quit()
get_new_image()
root.bind("y", callback_y)
root.bind("d", callback_d)
root.bind("n", callback_n)
root.bind("<Return>", callback_skip)
root.bind("<Escape>", close)
root.mainloop()
# Store results.
utils.write_labels(labels, labels_directory + args.file_name)