Seite 1 von 1

QtGui.QFileDialog.history()

Verfasst: Donnerstag 5. Mai 2011, 10:40
von mushroom
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?

Re: QtGui.QFileDialog.history()

Verfasst: Donnerstag 5. Mai 2011, 10:59
von 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.

Re: QtGui.QFileDialog.history()

Verfasst: Donnerstag 5. Mai 2011, 12:25
von mushroom
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?

Re: QtGui.QFileDialog.history()

Verfasst: Donnerstag 5. Mai 2011, 13:06
von mushroom
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.

Re: QtGui.QFileDialog.history()

Verfasst: Donnerstag 5. Mai 2011, 13:24
von Rekrul
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.