Programı bitirmeden mainWindowu kapatma

Merhaba bir kontrol paneli hazırladım ve üzerindeki buton basınca kendini kapatıyor bunu app.exit(app.exec()) kodu ile yaptım ama butona bastığımda python programı tamamen duruyor. Benim istediğim panalde gerekli ayarlamaları yaptıktan sonra butona bastığımda panelin kapanıp kodun geri kalanının çalışması. Yardımcı olursanız sevinirim.

duruyor derken? Biraz daha detay gerekli. Hata mı alıyorsunuz? İlgili kısmı debug etmeye çalıştınız mı?

Kodların çalışma sırası çoğu zaman sizin elinizdedir.

‘panel’ denilen şey tam olarak ne? Bir widget olduğunu varsayarsak, destroy() metodu işinizi gormeli, denediniz mi?
Edit: Konu başlığını tekrar okuyunca farkettim, sanırım ‘panel’ QMainWindow. Eğer arayüz tek bir pencereden oluşuyorsa, onu kapatınca programın sonlanması gayet normal.

Yazdığınız kodu kod görünümüne uygun şekilde paylaşırsanız daha hızlı sonuç alırsınız.

1 Beğeni
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

bu kodu okuduğunda programın geri kalanını okumuyor. Nasıl bu kodu okurken yani arayüz çalışırken yukardaki kodtan sonraki kodu nasıl çalıştırabilirim. Bu arada destroy işe yarıyor.

Çünkü sys modülünün exit() metoduna argüman olarak QApplication sınıfının exec_() metodu verilmiş.

exec_() fonksiyonu çağrıldığında olay döngüsü ( event loop ) başlatılır. Bu döngü tüm pencereler kapatılmadığı sürece (normal şartlarda) çalışmaya devam eder.
Sizin kodunuzda sadece 1 tane pencere var. Bu pencere kapatıldığında exec_() fonksiyonu geriye 0 döndürüyor(döngü kırılıyor) ve bu değer exit() metoduna argüman olarak veriliyor. exit metodu da argüman olarak 0 aldığı için programdan tamamen çıkıyor. Dolayısıyla aşağıda kalan satırlar çalıştırılmıyor. Yani exit() metodunu kullanmamalısınız, istediğiniz şeyi yapabilmek için.