Klikom na main.py
se pokrece aplikacija.
U glavni fajl uvozimo tkinter biblioteku sa svim klasama:
from tkinter import *
import tkinter.constants as constants
Kao i klase iz naseg package-a GUIs > modul GettyFrame:
from GUIs.GettyFrame import Root,GettyFrame,PicturesFrame
Zatim koristimo Root klasu koja ce drzati sve druge klase(tj. widgete kojima je roditelj klasa Root):
root = Root()
Nakon podesavanja glavne klase,pozivamo metodu:
root.mainloop()
i program prelazi u stanje u kome ceka korisnikove akcije.
GettyFrame.py sadrzi te tri klase koje ce se najvise koristiti. Uvozimo sve biblioteke koje nam trebaju za rad aplikacije:
from tkinter import *
import pyperclip
from urllib.request import urlopen
from PIL import Image, ImageTk
import io
import tkinter.constants as constants
import re
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
from tkinter import messagebox
import threading
from tkinter.ttk import Progressbar
import os
Kao i nase dve klase iz package-a Downloaders.GettyDownloader i Slike:
from Downloaders.GettyDownloader import GettyDownloader
from Slike import Slike
Klasa Root: Posto je to glavni ekran ova klasa mora da nasledjuje Tk iz tkinter biblioteke.
class Root(Tk):
Zatim override-ujemo konstruktor te klase,gde koristimo i pack za layout:
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
container = Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
Zatim kreiramo sve prozore(objekte) i dodajemo ih u recnik:
self.prozori = {}
for frejm in (GettyFrame,PicturesFrame,BlankFrame):
page_name = frejm.__name__
frame = frejm(container, controller=self)
self.prozori[page_name] = frame
frame.grid(row=0, column=0, sticky="nsew")
Za prvi ekran koji ce biti vidljiv korisniku postavaljamo GettyFrame gde ce korisnik unositi podatke o slikama koje mu trebaju:
self.resizable(False, False)
self.prebaci_frejm("GettyFrame")
self.geometry("746x256")
Promenljiva downloadProgress se koristi za vreme preuzimanja slika
self.downloadProgress = 0
Metoda prebaci_frejm prima parametre:
- page_name - za Frame koji na koji ce da se prebaci
- urll - link koji bi trebalo da sadrzi stranicu sa svim slikama
- br - broj stranice za pretragu
def prebaci_frejm(self, page_name,urll='',br=1):
prozor = self.prozori[page_name]
Kako program ne bi freeze-ovao koristimo dva Thread-a:
if urll != '':
self.t1_set()
self.t1_start()
self.t2_set(urll,br)
self.t2_start()
else:
prozor.