2014-04-11 23 views

Odpowiedz

12

Jeśli pominąć dir argumentu (lub przejść w pustym ciągiem), okno powinno pamiętają ostatni katalog:

filename = QtGui.QFileDialog.getOpenFileName(
       parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)') 

Funkcja tr służy do tłumaczenia ciągów widoczne dla użytkowników . Możesz go pominąć, jeśli nigdy nie będziesz dostarczać tłumaczeń do swojej aplikacji.

EDIT:

Wydaje się, że katalog start nie może być automatycznie zapamiętany na wszystkich platformach/stacjonarnych, w zależności od tego, czy użyć okna natywne lub nie. Jeśli jest używane wbudowane okno dialogowe Qt, katalog startowy powinien zawsze być automatycznie odnawiany na wszystkich platformach (nawet między wywołaniami aplikacji). Aby spróbować okno non-native, zrobić:

filename = QtGui.QFileDialog.getOpenFileName(
       parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)', 
       None, QtGui.QFileDialog.DontUseNativeDialog) 

Alternatywnie, można użyć QFileDialog constructor, która zawsze utworzyć non-native dialogowe:

dialog = QtGui.QFileDialog(parent) 
dialog.setWindowTitle('Open File') 
dialog.setNameFilter('Images (*.png *.xpm *.jpg)') 
dialog.setFileMode(QtGui.QFileDialog.ExistingFile) 
if dialog.exec_() == QtGui.QDialog.Accepted: 
    filename = dialog.selectedFiles()[0] 
+0

Dzięki za odpowiadasz, ale nie działa. Daje mi to: TypeError: argument 3 metody QFileDialog.getOpenFileName() ma niepoprawny typ. Używam PyQt4, zapomnij powiedzieć. –

+0

@liaozd. Niestety, 'None' działa tylko z Python3 - zamiast tego użyj pustego ciągu (działa zarówno z Python2, jak i Python3). – ekhumoro

+0

Tak używam python2.7 i PyQt4 w moim CentOS6.4, ale pusty ciąg znaków wydaje się nie działa dla mnie, zawsze otwiera folder skryptu Pythona jako domyślną pozycję. –