Witam wszystkich.
Programowanie to moje hobby. Od kilku miesięcy próbuję ogarnąć język python. W ramach ćwiczeń chciałem napisać program zmieniający obrazki poprzez przenikanie czyli jeden powoli przechodzi w drugi. Wczesniej napisałem taki program w Delphi i w Javascript. Program który zamieszczam jest bardzo prosty ale już sprawia kłopoty.
from tkinter import *
from PIL import Image,ImageTk
import time
root = Tk()
root.geometry('1000x750')
canvas=Canvas(root,width=1000,height=750)
canvas.pack()
pilImage1=Image.open("zielony.jpg")
image1=ImageTk.PhotoImage(pilImage1)
pilImage2=Image.open("czerwony.jpg")
image2=ImageTk.PhotoImage(pilImage2)
pilobraz=Image.blend(pilImage1,pilImage2, 0.1)
obraz=ImageTk.PhotoImage(pilobraz)
canvas.create_image(500,370,image=obraz)
print ('obrazek pierwszy')
time.sleep(2)
pilobraz=Image.blend(pilImage1,pilImage2, 0.8)
obraz=ImageTk.PhotoImage(pilobraz)
canvas.create_image(500,370,image=obraz)
print('obrazek drugi')
root.mainloop()```
Problem polega na tym że program wyświetla poprawnie i w odpowiednim czasie instrukcje print ale z wyświetleniem obrazka
czeka do końca i wyswietla tylko ten z wierszy od 21 a więc drugi czyli ostatni. Natomiast jeśli zablokuję wyświetlanie
ostatniego obrazka to pokazuje się tylko szare okno Tkinter. Jeśli usuniemy instrukcję time.sleep(2) to obrazek w ogóle się
nie wyświetla. W takiej sytuacji nie ma mowy o przenikaniu w jakiejkolwiek postaci. Oczywiście kod który przedstawiłem ma
tylko ilustrować problem. Chodzi mi głównie o to żeby poznać mechanizm dlaczego tak się dzieje i dlaczego Python nie
wykonuje instrukcji przez które przechodzi , a jeśli wykonuje to dlaczego nie wyświetla wyniku i co można zrobić aby mu
powiedzieć że ma go wyświetlić. Pewnie należałoby przenieść operację ładowania do osobnego wątku ale na to to ja jestem
jeszcze za słaby. Mam nadzieję że znajdzie się ktoś kto zechce poswięcić swój czas i douczyć nowego użytkownika. Pythona.
Będę zobowiązany za każdą podpowiedź.
Pozdrawiam !