QtGui.QFileDialog.history()

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
mushroom
User
Beiträge: 58
Registriert: Sonntag 21. November 2010, 12:32

Hallo,

in meinem Programm soll sich die GUI das zuletzte geöffnete Verzeichnis merken um so ein schnelleres Navigieren bzw. eine schnellere Arbeit mit dem Programm zu ermöglichen. Bin in der Doku dazu auf QtGui.QFileDialog.history() gestoßen.

Code: Alles auswählen

 def open_file(self):
        inputfile = QtGui.QFileDialog.getOpenFileName(self, 'Open file',
                    '/home', 
                    "Gaussian input files (*.com *.gjf *.in);;Gaussian output files (*.log *.out);;Gaussian extract output files (*.gex);; All files (*.*)")
        in_file=open(inputfile)
        print QtGui.QFileDialog.history()
        return in_file.read() 
        in_file.close()
Erhalte allerdings die Fehlermeldung

Code: Alles auswählen

QtGui.QFileDialog.history()
TypeError: first argument of unbound method QFileDialog.history() must be a QFileDialog instance
print steht da nur, damit ich sehe was denn rauskommt. Habe testweise die Klammern einfach mal weggelassen, also print QtGui.QFileDialog.history und erhalte damit schonmal keine Fehlermeldung mehr, jedoch wird beim print

Code: Alles auswählen

<built-in function history>
zurückgegeben. Ist denn dies der richtige Weg und wie komme ich dann an den Inhalt der History?
lunar

Nach Dokumentation ist "QFileDialog.history()" keine statische Methode, wie also kommst Du darauf, sie als solche verwenden zu können?

Wenn Du die statischen Methoden zur Abfrage von Dateinamen oder Verzeichnissen vom Nutzer verwendest, dann hast Du keinen Zugriff auf den darunter liegenden Dialog und kannst folglich auch nicht dessen Verlauf abfragen. Du musst den Dialog selbst erzeugen und anzeigen, dann kannst Du auch den Verlauf bearbeiten.

Dann allerdings verwendet Qt nicht mehr die Dialoge der darunter liegenden Plattform, sondern einen eigenen Dialog, der sich mitunter stark von denen der Plattform unterscheidet.
mushroom
User
Beiträge: 58
Registriert: Sonntag 21. November 2010, 12:32

Hui, so tief stecke ich dann doch nicht in der Programmierung drin, insbesondere in der Qt-GUI, soll heißen ich habe keine Ahnung, was eine statitsche Methode ist :-(

Die oben angezeigte Funktion war ein Auszug aus meinem Programm und befindet sich innerhalb der Klasse des Dialogs, also

Code: Alles auswählen

class MyDialog(QtGui.QDialog, Ui_Dialog):
    def __init__(self):
    ...

    def open_file(self):
    ...
@lunar Kannst du deine Erläuterung etwas näher ausführen, wenn es nicht zu viel Mühe macht?
mushroom
User
Beiträge: 58
Registriert: Sonntag 21. November 2010, 12:32

Habe gerade gesehen, daß der Umweg über die History für meine Bedürfnisse gar nicht notwenig ist. Arbeite jetzt einfach mit der von mir verwendeten Variablen 'inputfile'.

Trotzdem danke für deine Hilfe lunar.
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

Eine statische Methode ist nicht an die Instanzen einer Klasse gebunden, sondern an die Klasse selbst.

Da die Methode allerdings nicht statisch ist müsstest du demnach zuerst eine QFileDialog Instanz erzeugen um dann dessen history() aufrufen zu können.
Antworten