Seite 1 von 1

Slot reagiert nicht

Verfasst: Montag 15. Februar 2010, 12:05
von 4bit
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

Verfasst: Montag 15. Februar 2010, 12:09
von 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)

Verfasst: Montag 15. Februar 2010, 12:35
von 4bit
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.

Verfasst: Montag 15. Februar 2010, 13:06
von 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?

Verfasst: Montag 15. Februar 2010, 13:34
von 4bit
ja aber sehe keinen Ausweg. Installation von Qt4 hab ich nicht hinbekommen. Leider. Vielleicht muss ich doch meinen Laptop mitbringen.

Verfasst: Montag 15. Februar 2010, 13:40
von apollo13
Das ist die falsche Einstellung ;) Abgesehen davon kompiliert Qt relativ gut :)

Verfasst: Montag 15. Februar 2010, 13:59
von 4bit
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?

Verfasst: Montag 15. Februar 2010, 14:06
von Masaru
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?

Verfasst: Montag 15. Februar 2010, 14:12
von 4bit
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.

Verfasst: Montag 15. Februar 2010, 17:11
von flying sheep
da kannst du bestimmt nix installieren.

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

Verfasst: Montag 15. Februar 2010, 18:32
von 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.

Verfasst: Montag 15. Februar 2010, 18:45
von 4bit
Habe gerade bemerkt, daß PyQt4 zusammen mit Python2.4.4 auf den Rechnern hier läuft. Dann werde ich das nutzen.