2016-04-06 3 views
0

Ich versuche, einen URL-Öffner mit pyQt zu bauen. Alles ist in Ordnung, aber wenn ich versuche, mehrere URLs auf einmal zu öffnen, öffnen sie sich ungeordnet. Zum Beispiel führe ich etwas simillar auf den Code untenöffnen Sie URLs in einer bestimmten Reihenfolge, wenn Sie mit pyQt auf einen Button klicken

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()) 

und was bekomme ich 3 Registerkarten mit url3 in der ersten url1 in der zweiten und url2 in der dritten. Gibt es eine Möglichkeit, diese in der Reihenfolge erscheinen zu lassen, in der ich sie programmiert habe?

Antwort

0

Dies scheint von externen Prozessen abhängig zu sein, die außerhalb Ihrer Kontrolle liegen. Idealerweise würden Sie die erste URL öffnen, auf eine Benachrichtigung warten, die sie geladen hat, dann die nächste URL öffnen und so weiter. Aber natürlich gibt es keine solche Benachrichtigung, das scheint nicht möglich zu sein.

Offensichtlich hängt die Reihenfolge der Registerkarten von der Art der Ressourcen ab, weil sie asynchron geladen werden und einige möglicherweise viel schneller als andere geladen werden. Sie können jedoch versuchen, die Dinge zu steuern, um ein wenig von Ihrem Programm durch einen Timer mit einer kleinen Verzögerung einzuführen:

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

würde ich nicht überrascht, wenn dies nicht funktioniert, obwohl ...

+0

Sie sind richtig Ich habe das Problem mit der Funktion time.sleep() zwischen URL-Öffnungen behoben und es funktioniert gut. –

Verwandte Themen