Slot reagiert nicht

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Hallo,
versuche mich gerade in GUI Entwicklung einzuarbeiten und habe eine einfaches Beispielprogramm verändert, sodaß bei Knopfdruck ein print Befehl ausgeführt wird.
Nur wird er nicht ausgeführt und ich kann nicht sehen woran das liegt.

Code: Alles auswählen

import sys
from qt import *

class MainWindow(QMainWindow):
    def __init__(self, *args):
        apply(QMainWindow.__init__, (self,)+args)

        self.mainWidget=QWidget(self);
        self.vlayout=QVBoxLayout(self.mainWidget,10,5)

        self.bnLoad=QPushButton("datei laden",self.mainWidget)
        self.connect(self.bnLoad, SIGNAL("clicked()"),
                     SLOT("printstuff()"))  

        self.setCentralWidget(self.mainWidget)

    def printstuff(self):
        print "stuff"

def main(args):
    app=QApplication(args)
    win=MainWindow()
    win.show()
    app.connect(app, SIGNAL("lastWindowClosed()"),
                app, SLOT("quit()"))  
    app.exec_loop()

if __name__=="__main__":
    main(sys.argv)
P.S.: verwende Python 2.4.4 und folgendes Tutorium: http://www.commandprompt.com/community/pyqt/book1

Grüße,
4bit
lunar

SLOT() funktioniert nur mit C++-Slots. Vergiss einfach, dass es SLOT überhaupt gibt, und übergibt immer eine Methodenreferenz, e.g.

Code: Alles auswählen

self.connect(self.bnLoad, SIGNAL("clicked()"), self.printstuff)
Falls Du PyQt4 4.5 oder neuer verwendest, kannst Du Dir auch gleich die neue Syntax angewöhnen:

Code: Alles auswählen

self.bnLoad.clicked.connect(self.printstuff)
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Super,
danke Lunar, jetzt wird der print Befehl ausgeführt.

Kleine Anmerkung noch: habe zuerst nur SLOT aus Zeile 14 ersetzt und den aus Zeile 26 stehenlassen (da quit() ja ausgeführt wurde): keine gute Idee. Das Programm hängt sich böse auf (das Mainwindow ist zwar zu sehen aber der Button ist z.B. unbeschriftet).

Zuhause habe ich Python 2.6 und PyQt4 installiert, aber hier, an der Uni nutze ich die vorinstallierte, ältere Version (Py 2.4.4 und qt3 glaube ich).
Würde zwar gerne auch hier umsteigen, aber habe schon einen mehrere Tage andauernden Versuch, der nicht zu nichts geführt hat, hinter mir.

Grüße,
4bit.
lunar

Dir ist bewusst, dass Qt4 sich an vielen Stellen sehr von Qt3 unterscheidet und Qt3 schon lange nicht mehr gewartet wird und im Aussterben begriffen ist, oder?
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

ja aber sehe keinen Ausweg. Installation von Qt4 hab ich nicht hinbekommen. Leider. Vielleicht muss ich doch meinen Laptop mitbringen.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Das ist die falsche Einstellung ;) Abgesehen davon kompiliert Qt relativ gut :)
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Also: ich habe heruntergeladen:
  • Python-2.6.tgz
    PyQt-x11-gpl-4.7.tar.gz
Und sitzte an einem Rechner ohne Admin Rechte an der Uni. Ich kenne mich mit Linux kaum aus und weiß nicht ob ich zusätzlich SIP installieren muss oder nicht.
Was nu?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

4bit hat geschrieben:... Und sitzte an einem Rechner ohne Admin Rechte an der Uni ...
Öh, und dann glaubst Du dort so mal Dir nichts Software installieren zu können?
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

na ich meinte keine System Admin Rechte. Ich hab auf meine Verzeichnisse schon Admin Rechte. Oder User Rechte. bla. Ich kenn mich hier eben nicht gut aus.
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

da kannst du bestimmt nix installieren.

stöpsel nen bildschirm im cip-pool ab und nutz den mit deinem laptop, das ist das beste ;)
lunar

4bit hat geschrieben:ja aber sehe keinen Ausweg.
Deine Sache, aber es ist nicht sinnvoll, Qt3 zu lernen, und schon gar nicht parallel zu Qt3, noch dazu als Anfänger.
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Habe gerade bemerkt, daß PyQt4 zusammen mit Python2.4.4 auf den Rechnern hier läuft. Dann werde ich das nutzen.
Antworten