Aralıklarla sayfa açma

kullanıcının ekranında saat başı sayfa açıp sorular sormak istiyorum. kullanıcı ekran başındayken karşısına saat başı bi arayüz çıkarmak mümkün mü

Mümkün.

hangi kaynak bana yol gösterebilir

Saat dediğinize göre, zaman hesabı yapabileceğiniz time veya datetime gibi bir kütüphane kullanmanız gerekiyor.

Arayüz için de bir tane arayüz kütüphanesi kulanmanız lazım.

Ama en önemlisi, bu isteğinizi nasıl yerine getirebileceğinizi, nasıl bir kod yapısı oluşturmanız gerektiğini biliyor olmanız lazım.

İşinize yarayabilecek olan kütüphaneler: time, datetime, tkinter. Bu kütüphaneler ile ilgili biraz araştırma yapmanız gerekiyor.

1 Beğeni

Pyqt5 i de deneyebilirsin arayüz tasarımı için

Sched modülünün sonuna bir örnek yazmıştım.(İstihza belgelerindeki) Bir döngüden bahsediyor o örnek. Eğer o döngüyü threading ile kullanırsanız bilgisayar açık olduğu sürece ayarladığınız işi yapar. Program kapansa bile.

1 Beğeni

dili daha tam olarak bilmediğim için ileriki zamanlarda bunu deniycem teşekkür ederim umarım zorlandığım yerde tekrar yardım alabilirim

abi yaptın mı projeni @deneme

Standart threading kutuphanesinden mi bahsediyoruz? Hangi fonksiyon/class?

Nasil?

daha kesinleştiremedim konuyu

Evet. Sadece basit bir Thread oluşturup başlatmaktan bahsediyorum.

Farklı bir Thread üzerinde yürümesi onu programdan bağımsız çalışıyor hâle getiriyor ama program üzerinden onu durdurabilirsiniz. Program kapatılırsa bilgisayar kapatılmadığı sürece yenilemeli fonksiyon olarak çalışmaya devam ediyor.

Unutmazsam bunun bir örneğini yazayım size.

çookk makbule geçerrr

Bu normal bir isletim sistemi thread’i yaratiyor.

Cagiran/ana thread’den bagimsiz bir thread yaratiyor ama thread’lerin butun olayi ayni process icinde calisip birbirlerine/process’e bagli olmalari.

Oldurdugu process’in thread’lerini baska bir process’e tasiyan bir isletim sistemi bilmiyorum. Yenilemeli fonksiyon nedir?

Sanirim thread’ler process’lerle karismis.

import sched
import threading
import time


# scheduler nesnesi oluşturalım
s = sched.scheduler(time.time, time.sleep)

# Yenilemeli fonksiyonumuz
def artır(x):
    # Çalışıp çalışmadığını test etmek için bir dosyaya
    # bir sayı yerleştirip sayıya her saniye 1 ekleyelim.
    with open("sayılar.txt", "w") as file:
        file.write(str(x))
    # fonksiyonumuzu her çalıştığında tekrar çalıştıralım.
    s.enter(1, 1, artır, argument=(x+1,))

s.enter(1, 1, artır, argument=(0,))
threading.Thread(target=s.run).start()

Kendi kendini çağıran fonksiyona denir.

Biraz abartmışım program kapatılınca bu işlem de kapanıyor. Ancak programın kapatılmasını engellerseniz(Sadece uzantısını .pyw yapın) çalışacağına inanıyorum. Ancak şu son dediğimi test etmedim.

Sched modulünü okumanızı tavsiye ederim.

1 Beğeni

Galiba @aib niye yinelemeli fonksiyon demedin diyo.
yenilemeli fonksiyon

yinelemeli fonksiyon

^^

Ozyinelemeli. Boyle bir anlamda kullanildigini tahmin ettim, fakat thread’lerle baglantisini kuramadim.

Spesifik olarak okumam gereken bir yeri var mi? Gecen sene okuyup kullanmaya calismistim –ilginc bi sekilde konuyla da ufaktan alakali olarak– birden fazla thread tarafindan kullanilamadigini fark ettim. Scheduler thread’i bir sonraki event’e kadar uyurken araya yeni bir event eklendiginde interrupt olamiyor. Olabilen soyle bir versiyonunu yazdim.

Windows’a spesifik terminal penceresi kapanmasiyla ilgili bir gorsellikten bahsediyorsunuz sanirim. Ben process’in kapanmasi ve thread’lerinin akibeti veya python interpreter’inin durmasi ve thread’lerinin akibetinden bahsediyorum.

Ilki icin isletim sistemi scheduler’i (sched modulu degil) nedir, nasil calisir bakabilirsiniz. (Cagdas isletim sistemlerinde hepsi asagi yukari ayni calisiyor.) Ikincisi icin threading'in dokumentasyonu ne kadar yeterli hatirlamiyorum fakat deneme-yanilmayla cok rahat incelenebiliyor, tavsiye ederim. Burada bahsettiginiz sey daemon parametresi olabilir.

1 Beğeni