Pyqt4 Responsive Gui?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Ich bin mit meinem webseiten scanner schon sehr weit gekommen ( nur RFI enttäuscht mich manschmal...) und möchte mir jetzt mit PyQt einen Gui dazu bauen. Da das Scannen von webseiten länger dauert ^^ brauche ich einen Responsiv gui. Ich finde aber nichts bei google und sowas wie wx.app7 gibt es auch nicht ( da es ja für wx ist ). Weiß jemand wie ich das hinbekommen kann?

Hier ist der Sourcecode, wenn es jemand braucht. http://paste.pocoo.org/show/126657/ die 2.te Zeile einfach ignorieren..., python spinnt bei mir...

Und noch ein bild vom Gui:
Bild
Zuletzt geändert von INFACT am Samstag 4. Juli 2009, 18:31, insgesamt 3-mal geändert.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
BlackJack

@INFACT: Du brauchst keine "nonresponsive GUI", dass ist das was man ja gerade *nicht* haben will, dass die GUI "tot" ist, während ein längerer Vorgang läuft.

Warum erbt Dein Dialog von `Thread`, warum heisst `dicts()` so wie es heisst, und das dort in einem Thread "busy waiting" auf eine Checkbox in der GUI gemacht wird ist nicht Dein Ernst, oder!?
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

? ich weiß garnicht was du meinst?

Der Code enthält doch überhaupt nicht solche sachen...
Nein, also, vielen dank für den "Vorschlag meinen Code zu verbessern". Ich habs jetzt gemacht. Wenn nochjemand verbesserungs "vorschläge" hat: Posten!
Aber wie bekomme ich den jetzt einen Responsive gui?
Edit: das mit dem von thread erben hab ich vergessen, ich dachte so wird der responsiv...
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
BlackJack

Scherzkeks. Nachdem Du den Beitrag verändert hast, enthält der Code "solche Sachen" nicht mehr. In der Tat. Der ursprünglich verlinkte Code enthält das aber sehr wohl: http://paste.pocoo.org/show/126646/
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Ich habe versucht nur den scan prozess ( der so lange dauert als thread laufen zu lassen) aber dann stürtzt das ganze programm ab...
Hat keiner eine lösung?
Edit: überhaupt lassen sich nur eigene funktionen starten
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@INFACT:
Erstmal Grundsätzliches zu GUI und Threads - alle GUI-Aktivitäten sollten im MainThread des Interpreters laufen, d.h. die GUI selbst ist single threaded und an den ersten Thread gebunden.
Alle anderen GUIfernen Dinge, wie bei Dir der Scan-"Prozeß", können in Threads gepackt werden. Willst Du von dort aus mit der GUI interagieren, brauchst Du einen Mechanismus, der das threadsafe bewerkstelligen kann. Für PyQt solltest Du den Thread von QThread ableiten, die Klasse bringt ein threadasfe signaling mit.

zu Deinem Code:

Was ist das "import main"? Die Methode main() rufst Du nirgens auf, wie mir scheint, versteckt sich dahinter Dein Scanprozeß?

Du leitest ein QDialog von Ui_MainWindow ab? :shock:
In QDialog dürften ~80% der MainWindow-Methoden nicht definiert sein, sollte Deine ui-Datei eine solche benutzen, wird schon der Startversuch mit einem AttributeError quittiert. Also darauf achten, das Deine Basisklasse zu der ui-Basisklasse paßt. Desweiteren muß Du die ui-Datei nicht explizit übersetzen, das geht auch on-the-fly (da gibts hier schon viele Beiträge dazu).

Wenn Du ein paar Sachen des Scanprozesses zeigst, kann man Dir vllt. auch bei der Threadumsetzung helfen.
Antworten