Qt5'de Uygulama Kapatıldı Sinyali Nasıl Alınır

Herkese merhabalar,
Python ile yazdığım bir arayüz programım var. Programda hem arayüz hem de elektronik kart ile haberleşme için kullandığım bir döngü var. Bunları ‘threading’ ile kullanıyorum. Arayüz programı kapatıldığında programın sonlanmasını istiyorum. Çünkü arayüzü kapattığımda göre yöneticisinde hâlâ çalışmaya devam ediyor. Görev yöneticisinde programımla ile ilgili 2 adet uygulama görüküyor. Sanırım bunların biri arayüz için, bir diğeri de haberleşme için kullandığım döngü için. Arayüz kapatıldığında, gelen bir sinyal ile hem arayüzü hem de döngüyü bitirmek istiyorum. Yardımcı olabilir misiniz.

pencere.isActiveWindow()
gibi bir fonksiyon kullandım ama bunda uygulama arka plana atıldığında bile ‘False’ değeri dönderiyor.

Main Thread Sonlanıyor Ama Child Thread(Oluşturduğunuz Threadler) Sonlanmadığı İçin Program Hala Çalışıyor Görüküyor.
Çözüm >>

global AppClose
AppClose = False
def ThreadFunction(): #Thread Fonksiyonlarınız
    while (True):
        #Cihaz Kodlarınız
        if(AppClose == True):
            break
def ClosedEvent(Par):
    AppClose = True
MainWin.closeEvent = ClosedEvent #MainWin Pencereniz Olarak Kapattığınız An ClosedEvent Fonksiyonunu Çalıştıracak

Çok teşekkür ederim emeğinize sağlık, işe yaradı.

def ClosedEvent(par):
global AppClose #bunu eklemeyince olmuyor, birinin daha işine yararsa
AppClose = True

Yeri gelmişken sorayım bari, biraz bakındım ama bulamadım.
Yorumlarda kodu neyin içerisine almamız lazım. Kod olduğu belli olması adına?

Bir de fonksiyona neden ‘Par’ diye bir girdi verdik?(Ben yazmadım onu)

def ClosedEvent(par):
    global AppClose
    AppClose = True
def ClosedEvent():
    global AppClose
    AppClose = True

İlk Olarak Par Parametresini Koymamın Nedeni Bazı PyQt Eventleri (clicked Gibi) Parametre Almak Zorunda Çünki Bu Eventler Bazen Bu Event Gerçekleşince Değer Gönderebiliyor Alışkınlıktan Koydum Bende.
İkinci Olarak #Cihaz Kodlarınız Bölümünde Thread Fonksiyonunda Kullandığınız Kodları Kasıt Ettim.
Ayrıca global i Unutmuşum Test Etmedim Kodu O Sebeple İyi Çalışmalar.

1 Beğeni

Anladım. Teşekkür ederim

1 Beğeni