pyQt

2016-04-06 32 views
0

kullanarak bir düğmeyi tıklattığınızda belirli bir sırayla URL'leri açın PyQt kullanarak bir URL açacağı oluşturmaya çalışıyorum. Her şey iyi ama aynı anda birden çok URL'yi açmaya çalıştığımda sıralanmamış olarak açılır. Mesela benpyQt

def UK_N(self): 
    if self.txt_S_UK.text() != '': 
     url = 'url1' 
     webbrowser.open(url) 

def FR_N(self): 
    if self.txt_S_FR.text() != '': 
     url = 'url2' 
     webbrowser.open(url) 

def DE_N(self): 
    if self.txt_S_DE.text() != '': 
     url = 'url3' 
     webbrowser.open(url) 


def Open_N(self): 
    if self.box_N_UK.isChecked() == True: 
     self.UK_N() 
    if self.box_N_FR.isChecked() == True: 
     self.FR_N() 
    if self.box_N_DE.isChecked() == True: 
     self.DE_N() 


self.btn_N_Open.clicked.connect(lambda: self.Open_N()) 

altına koduna simillar şey koşmak ve ne olsun üçüncü ikinci ve url2 bölgesindeki ilk url1 içinde URL3 ile 3 sekme olduğunu. Bunları programladığım sırada göstermenin bir yolu var mı?

cevap

0

Bu, denetiminizin dışındaki harici işlemlere bağlı gibi görünüyor. İdeal olarak, ilk URL'yi açar, yüklendiğini bildiren bir bildirim beklersiniz, ardından bir sonraki URL'yi açarsınız. Ama tabi ki böyle bir bildirim yok, bu mümkün görünmüyor.

Açıkçası, sekmelerin sırası, kaynakların yapısına bağlıdır, çünkü bunlar eşzamansız olarak yüklenirler ve bazıları diğerlerinden daha hızlı yüklenebilir. ...

olsa bu işe yaramadı eğer

QtCore.QTimer.singleShot(200, lambda: webbrowser.open(url)) 

ben şaşırmam: Ancak, küçük bir gecikme tanıtmak için bir zamanlayıcı kullanarak şeyler programınız içinden biraz kontrol etmek deneyebilirsiniz

+0

Haklısınız. Sorunu, url açıklıkları arasında time.sleep() işlevini kullanarak düzelttim ve iyi çalışıyor. –