Seite 2 von 2

Re: Funktion einer Klasse wird nicht aufgerufen, obwohl sie funzt

Verfasst: Dienstag 9. Juli 2019, 09:47
von xXSkyWalkerXx1
Da ich nicht erneut ein Thread öffnen wollte, habe ich jetzt einfach Mal dieses ausgewählt.

Undzwar möchte ich zu einem Programmen eine dynamische Library hinzufügen, da ich aber kein Server habe ,denn 1) kein Geld ausgeben will & 2) zu faul bin mir erst ein einzurichten, habe ich es so gemacht, dass ich jedes Programm (Name+URL) auf eine Seite meiner Webseite schreibe, was z.b. so aussieht:

Code: Alles auswählen

Python-Forum | www.python-forum.de
Nun könnten allerdings tausende Programme (also Name+Url - jedes Programm durch neue Zeile trennbar) da stehen, dafür habe ich folgenden Code:

Code: Alles auswählen

for programs in online_libs: #'online_libs' wäre in diesem Bsp: [Python-Forum | www.python-forum.de]
            menu_item = QAction(QIcon("sgi_icon.png"),str(programs.split('|')[0]),self)
            menu_item.triggered.connect(lambda: webbrowser.open(str(programs.split('|')[1])))
            self.library.addAction(menu_item)
Die Menus werden erstellt, mit Name und Url, allerdings ist auf allen Items die Url des letzten Datensatzes.
Das Warum ist mir klar, denn 'triggered.connect()' greift letztendlich nur auf 1 Variable zu.

Aber mir fällt nichts ein wie ich die Variable in der for-Schleife nach jeden Ablauf unterschiedlich erzeugen lasse.

Re: Funktion einer Klasse wird nicht aufgerufen, obwohl sie funzt

Verfasst: Dienstag 9. Juli 2019, 09:51
von __deets__
Und weil ich nicht moechte, das ein einzelner Thread zu einer thematisch inkongruenten Ansammlung von Nachrichten verkommt, werde ich die Frage hier nicht beantworten ;)

Re: Funktion einer Klasse wird nicht aufgerufen, obwohl sie funzt

Verfasst: Mittwoch 18. September 2019, 19:25
von xXSkyWalkerXx1
Da es hier ja um das Nicht-Erscheinen eines Fenster geht, poste ich hier erneut mein Anliegen.

Undzwar habe ich 2 Codes:

Code: Alles auswählen

def start_thread(self,username,password,trial_version,instance):         
        self.LoginThread = Thread(username,password,trial_version,instance)
        self.LoginThread.start()


class Thread(threading.Thread):
	def __init__(self,username,password,trial_version,instance):
        	"""
        	initilialize Thread
        	"""
       	 	threading.Thread.__init__(self)
        	self.username = username
        	self.password = password
        	self.trial_version = trial_version
        	self.login_window = instance
	
	def run(self):
		self.login_window.close()
                self.ui = Interface().main(
                                         self.script,self.prog_version,self.script_version,
                                         self.script_path,self.lic,self.library_list,
                                         self.username,self.trial_version
                                                     )

Code: Alles auswählen

def start_thread(self,username,password,trial_version,instance):         
        self.LoginThread = Thread(username,password,trial_version,instance)
        self.LoginThread.run()


class Thread():
	def __init__(self,username,password,trial_version,instance):
        	self.username = username
        	self.password = password
        	self.trial_version = trial_version
        	self.login_window = instance
	
	def run(self):
		self.login_window.close()
                self.ui = Interface().main(
                                         self.script,self.prog_version,self.script_version,
                                         self.script_path,self.lic,self.library_list,
                                         self.username,self.trial_version
                                                     )
Mein Ziel ist es ein Loginvorgang mit Thread zu erstellen, damit sich das Fenster dabei nicht aufhängt & der Benutzer denkt das Programm sei abgestürzt.
Der 1. Code funktioniert nicht, der 2. aber schon - sprich: der Code mit dem Thread funktioniert nicht, der ohne Thread tut es aber.

Ich verstehe nicht wieso - okay, wende Threads auch erst seit neuesten an.
Kann mir da jemand erklären, worin das Problem liegt?

Danke im Vorraus & Grüße,
xXSkyWalkerXx1

Re: Funktion einer Klasse wird nicht aufgerufen, obwohl sie funzt

Verfasst: Donnerstag 19. September 2019, 16:32
von xXSkyWalkerXx1
Iwer weiß es doch? ^^

Re: Funktion einer Klasse wird nicht aufgerufen, obwohl sie funzt

Verfasst: Donnerstag 19. September 2019, 20:35
von Sirius3
GUIs und Threads sind eine schwierige Sache, vor allem, wenn es keine QT-Threads sind.
Die Thread-Klasse macht nichts sinnvolles und der Rest des Codes fehlt, um zu verstehen, was Du machen willst. Was ist `Interface` oder `main`?