python ile 6-7 aylik bir tanisikligim oldu suan yapmak istedigim bir uygulama var. Aldigim verileri sql tutup sonrada guncelleme, silme, arama, ekleme islemleri yapiyorum fakat pyqt5 munu bar tiklayip yeni pencere acip islemleri orada yapmak konusunda takilip kaldim. Ayrica navigasyon menusude eklemek istiyorum ornekler ulasip inceledim aynisi yapmaya calistim fakat bir turlu haritayi cikartamadim. Hata kodu vermeden bir cikti verip islem sonlaniyor. Fikriniz almak isterim.
hata vermeden kapanmasının nedeni sys.exit(sys._exec()) kodunu kullanmamış olman olabilir sys modülünü import edip dener misin?
bu arada foruma hoşgeldiniz
Evet onu biliyorum benim kurgulayamadigim sanirsam ilki pyqt5 ve sqlite ile ilgili bir durum var. ikinci durum icin yeni pencere acimayi engelleyen farkli bir durum daha var onu fark edemedim
harita icinde suanlik herhangi bir tezim yok. Kod uzerinde biraz calisim paylasirim.
Muhtemelen benimde zamanında karşılaştığım bir hata ile karşılaşıyorsun. Hiçbir hata kodu vermeden pencerenin açılmasını beklediğin halde açılmıyorsa yüksek ihtimal pencereyi yeni bir değişkene kaydetmemişsindir. Pencerenin ram üzerinde bir adreste tutulması gerekiyor. Başka bir class oluşturup QWidget veya QMainWindow sınıflarından miras alarak kendi widgetiniz yazın. Daha sonra o pencereye geçiş yapmak istediğinizde
diyelim ki oluşturduğunuz sınıfın adı yeniwindow olsun
pencere = yeniwindow()
pencere.show()
yapmalısınız.
yeniwindow().show() gibi birşey yapıyorsanız bu ram üzerinde bir değer tutmayacağı için kapanacaktır en azından ben sebebinin bu olduğunu bulmuştum ama çözüm çalışıyor eğer sorun böyleyse
yeniwindow zaten oluşturulduğu anda bellekte yer kaplıyor. Ekranın kapanmasının sebebi, ekranı temsil eden nesneye hiçbir değişken veya başka bir nesne işaret etmiyorsa Python’un garbage collector’u tarafından otomatik olarak silinmesi.
Denemek lazım, Python’daki garbage collector’un asıl görevi reference cycle’larını kırmak. Onun haricinde reference count’u sıfır olan nesneler anında siliniyor.
Tabii bu ekranın silinmesini engellese bile bir çözüm değil, memory leak’a sebep olur.