-
Notifications
You must be signed in to change notification settings - Fork 0
/
slider.py
84 lines (66 loc) · 2.28 KB
/
slider.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
77
78
79
80
81
82
83
import sys
if sys.version_info[0] == 2: # the tkinter library changed it's name from Python 2 to 3.
import Tkinter
tkinter = Tkinter #I decided to use a library reference to avoid potential naming conflicts with people's programs.
else:
import tkinter
from PIL import Image, ImageTk
import PIL
from PIL import Image, ImageTk
import os
import time
import fnmatch
#initialize tkinter
root = tkinter.Tk()
root.overrideredirect(True)
root.overrideredirect(False)
root.attributes('-fullscreen',True)
#define images
imagePaths = []
folders = []
for (path, dirnames, filenames) in os.walk('/media/usb0'):
folders.extend(os.path.join(path, name) for name in dirnames)
imagePaths.extend(os.path.join(path, name) for name in fnmatch.filter(filenames, "[!.]*.jpg"))
numImages = len(imagePaths)
print(imagePaths)
#for testing purposes
if(numImages <= 0):
imagePaths = ["./images/start.jpg"]
numImages = len(imagePaths)
if(numImages <= 0):
print("No Images, Aborting...")
sys.exit()
#build first panel
img = ImageTk.PhotoImage(Image.open(imagePaths[0]).resize((700,1000)))
panel = tkinter.Label(root, image=img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
class Slider:
def __init__(self, root, panel):
self.root = root
self.panel = panel
self.counter = 0
def resize(self, image):
basewidth = 800
width, height = image.size
if(width > height):
basewidth = 1200
wpercent = (basewidth / float(width))
hsize = int((float(height) * float(wpercent)))
newImg = image.resize((basewidth, hsize))
return newImg
def next_image(self):
img = self.resize(Image.open(imagePaths[self.counter]))
#imgtk = ImageTk.PhotoImage(Image.open(imagePaths[self.counter]).resize((700, 1000)))
imgtk = ImageTk.PhotoImage(img)
#change panel image
self.panel.configure(background='black')
self.panel.configure(image=imgtk)
self.panel.image = imgtk
self.counter += 1
if self.counter >= numImages:
self.counter = 0
self.root.after(5000, self.next_image)
app = Slider(root, panel)
app.next_image()
root.bind('<Escape>', lambda e: (e.widget.withdraw(), e.widget.quit()))
root.mainloop()