Kullanıcının bir düğmeyi tıklattığı ve bir web sitesinden bazı verileri indirmek için bir işlem başlattığı bazı python PyQT kodları var. Bu süre boyunca liste penceresinde "lütfen bekleyin" demek için bir mesajın görünmesini istiyorum, böylece bir şeyler olduğunu biliyorlar.PyQT liste görünümü penceresindeki mesajların zamanlaması, bir işlev çalışmadan önce gerçekleşecek mi?
Ancak zamanlama kapalıdır ve işlem bittikten sonra ileti işlendikten sonra mesaj durumu için kod eklediyse de, işlevin başlatılması için sınıf işlevinin başlangıcında işlemi başlatmak için tıklayın. Bu aldığım kod kısa versiyonu:
self.statusfeed.addItem("Please Wait....Updating database from the web")
update_db()
self.statusfeed.addItem("Database updated")
fonksiyon update_db() indirmeyi çalışır.
for filename, weblink in web_links:
netfile = urllib2.urlopen(weblink)
out_fp = open(os.path.join(root, filename), 'w')
out_fp.write(netfile.read())
out_fp.close
lütfen bekleyin durum indirme yapılır sonrasına kadar güncellenmiyorsa Ancak:
Bu dosyaları almak için weblinks bir dictonary dışındaki güncelleme fonksiyonunun ana parçasıdır. Durumu yukarıda gösterdiğim sıraya göre bekleyip güncellemek için nasıl zorlayabilirim?
"update_db()" işlevine daha fazla ayrıntı (kod) vermeniz gerekeceğini düşünüyorum. Aslında dediğin gibi arka planda koşuyor gibi görünmüyor, ama belki de bu tasarım mı? Update_db() 'işlevi bir iş parçacığı veya işlem başlatır ve tamamlanana kadar geri dönmez mi? [Bu] (http://stackoverflow.com/a/29917237/1994235) yanıtı, iletilerin neden beklenmedik zamanlarda göründüğünü açıklar. –
Tamamen update_db() işlevi yedi web dosyasında yedi dosyayı açmak için urllib2'yi kullanır ve dosyalar yerel bir dizine yazılır. –
Ben iş parçacığı vb ile tam bir noob var, bu yüzden benimle orada yavaş gitmek zorunda kalacaksınız ... –