QFileDialog: unbounded method (Dummheitsfehler)

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Hi

Ich hab irgendwie Probleme mit QFileDialog selbst wenn ich 1:1 die Doku befolge...

Code Schnipsel 1:

Code: Alles auswählen

    def openSelectMount(self):
        mount = QtGui.QFileDialog
        print "Funzt?"
        mount.setFileMode(QtGui.QFileDialog.ExistingFile)
        if mount.exec_():
	        filename = mount.selectedFiles()
        	print filename
Hier brucht der Code bei "mount.setFileMode()" ab mit der Meldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/media/USB/KCrypt/Python/GUI/mount.py", line 20, in openSelectMount
    mount.setFileMode(QtGui.QFileDialog.ExistingFile)
TypeError: QFileDialog.setFileMode(QFileDialog.FileMode): first argument of unbound method must have type 'QFileDialog'

Code Schnipsel 2:

Code: Alles auswählen

    def openSelectMount(self):
        mount = QtGui.QFileDialog
        mount.FileMode(1)
        if mount.exec_():
            filename = mount.selectedFiles()
            print filename
Hier bricht der Code bei "mount.exec_()" ab mit der Meldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/media/USB/KCrypt/Python/GUI/mount.py", line 21, in openSelectMount
    if mount.exec_():
TypeError: QDialog.exec_(): first argument of unbound method must have type 'QDialog'

Kann mir jemand sagen wo der Fehler ist, denn ich finde ihn nicht und in C++ funktioniert das ganze Problemlos.

Es wird auch so in der Doku beschrieben...
http://doc.qt.nokia.com/4.6/qfiledialog.html#details
http://www.riverbankcomputing.co.uk/sta ... ml#details
Zuletzt geändert von AngelusNoctis am Freitag 4. Juni 2010, 17:48, insgesamt 1-mal geändert.
lunar

Lies doch bitte im Tutorial nach, wie man in Python Exemplare von Klassen erzeugt, und was die Zeilen "mount = QtGui.QFileDialog" tatsächlich bewirkt. Diese Frage hat nichts mit Qt direkt zu tun, sondern zeigt, dass Du die Semantik von Python noch nicht vollends verstanden hast. Python ist eben nicht C++, und die Objekterzeugung funktioniert auch nicht wie in C++. Im Übrigen würde das selbst in C++ nicht notwendigerweise einwandfrei funktionieren, da "mount = QFileDialog" das Objekt auf dem Stack mit deterministischer Lebensdauer erzeugen würde.
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Nö, liegt einfach an nem dummen Fehler...

Und zwar das ich Direcotry und Titel vergessen hatte (Was man vor dem Edit sah da es 3 Codeschnipsel waren) bei der Zuweisung.



Aber gut das wir darüber geredet haben...
Antworten