Re: Thread Problem
Verfasst: Sonntag 6. Januar 2013, 15:16
@prog(r)amer: Ich würde auf die „neue” Art Signale und Slots verbinden umstellen und das `response`-Signal in der `Worker`-Klasse definieren. „Neue” in Anführungsstrichen, weil das eigentlich gar nich mehr so neu ist. Eine Umstellung bringt weniger Schreibarbeit und mehr Typsicherheit, dass heisst Fehler fallen früher auf. Wobei Du selbst für die alte Variante wohl das umständlichste und längste genommen hast, was man da schreiben kann.
Der Quelltext entspricht in der Form nicht ganz dem Style Guide for Python Code (PEP 8). Bei der Namensgebung ist es üblich die gepflogenheiten von GUI-Toolkits zu übernehmen, aber die Einrückung und Leerzeichensetzung kann man auch da vom Guide übernehmen.
``while`` ist keine Funktion, deshalb sollte man es auch nicht so schreiben als wäre es eine. Die Klammern sind in Python an der Stelle sowieso überflüssig.
Der `Worker` wird erstellt und gestartet bevor die GUI aufgesetzt und die Signale verbunden sind. Da können also potentiell Daten verloren gehen.
Wo kommt `s` eigentlich her? Das sieht nach einer globalen Variablen aus, was ziemlich unschön/unsauber wäre.
Letztendlich kann man hier auch ohne eigene Threads auskommen wenn man die Netzwerkklassen von Qt verwendet. `QTcpSocket` hat zum Beispiel ein Signal das
gesendet wird wenn Daten zum Lesen bereit stehen. Es gibt eine Übersicht zu Netzwerkklassen in der Qt-Dokumentation.
Der Quelltext entspricht in der Form nicht ganz dem Style Guide for Python Code (PEP 8). Bei der Namensgebung ist es üblich die gepflogenheiten von GUI-Toolkits zu übernehmen, aber die Einrückung und Leerzeichensetzung kann man auch da vom Guide übernehmen.
``while`` ist keine Funktion, deshalb sollte man es auch nicht so schreiben als wäre es eine. Die Klammern sind in Python an der Stelle sowieso überflüssig.
Der `Worker` wird erstellt und gestartet bevor die GUI aufgesetzt und die Signale verbunden sind. Da können also potentiell Daten verloren gehen.
Wo kommt `s` eigentlich her? Das sieht nach einer globalen Variablen aus, was ziemlich unschön/unsauber wäre.
Letztendlich kann man hier auch ohne eigene Threads auskommen wenn man die Netzwerkklassen von Qt verwendet. `QTcpSocket` hat zum Beispiel ein Signal das
gesendet wird wenn Daten zum Lesen bereit stehen. Es gibt eine Übersicht zu Netzwerkklassen in der Qt-Dokumentation.