QT Desinger ile bir kaç ara yüz tasarladım hepsi birbiri ile bağlantılı ara yüzler. Benim istediğim şey örnek vermek gerekirse CS6 açılışında bizi karşılayan bekleme ekranından yapmak. Daha doğrusu o ekrandan yaptım. Sorunsuz çalışıyor. Ancak ben o ekranı program açıldıktan sonra 3sn kadar ekranda tutup tekrar kapanmasını istiyorum. Time modülünün sleep() fonksiyonunu kullandım ancak çalışmıyor. 3 sn kadar bekliyor ama açılış ekranı sorunlu bir şekilde dönderiliyor. Altta resimde görüldüğü gibi kodları yadım.
time.sleep()'i doğrudan kullanmanızla alakalı diye düşünmekteyim. Kodlarınıza threading kütüphanesini dahil edebilirsiniz.
Örnek kullanım:
import time
from threading import Thread
class Timer:
def __init__(self):
self.initial = None
self.current = None
self.delay = None
self.function = None
self.args = None
def start(self, function, delay, args=[]):
self.args = args
self.function = function
self.delay = delay
self.initial = time.perf_counter()
Thread(target=self.check).start()
def check(self):
while True:
self.current = time.perf_counter()
difference = self.current - self.initial
if difference >= self.delay:
self.function(*self.args)
break
else:
time.sleep(1/20)
def say(text1, text2):
print(text1, text2)
Timer = Timer()
# 5 saniye sonra say fonksiyonunun çalışması için:
Timer.start(say, 5, args=["Hello", "World!"])
acilis_fonk() fonksiyonunun dahil olduğu sınıfa X diyelim. X sınıfında yeni fonksiyon oluşturalım.
def kapat(self):
self.win1.close()
Şimdi de ayrı bir sınıf olarak Timer sınıfını kodumuza ekleyelim.
Bundan sonra da kod akışımız şu şekilde olsun.
X.acilis_fonk()
Timer.start(X.kapat, 5)
args = [] olarak belirtildiğinden burada ek olarak belirtmeye gerek yok.
Bunları yapmadan önce acilis_fonk() fonksiyonunun son 2 satırını silmeyi unutmayın.
bu yolu denedim ancak acilis ekrani kapanmiyor. 3000 dendim once ondan kaynaki sandim 3 yaptim orayi ancak ondan kaynakli değilmis. Gök mavisi anka hocaminda çozum yolunu pek anlamadim
Sorunu classları tek bir .py dosyasında toplayarak QTimer.singleShort() fonksiyonunu kullanarak çözdüm. ben qt desingerden yaptığım classları import ederek yapmaya çalışıyordum. o şekilde neden olmadı bilmiyorum ama tek .py dosyasına koyunca istediğim şekilde çalıştı.