2014-04-11 17 views

Trả lời

12

Nếu bạn bỏ qua đối số dir (hoặc vượt qua trong một chuỗi rỗng), hộp thoại nên nhớ thư mục cuối cùng:

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

Chức năng tr được sử dụng cho dịch chuỗi do người dùng có thể nhìn thấy . Bạn có thể bỏ qua nếu bạn không bao giờ cung cấp bản dịch cho ứng dụng của mình.

EDIT:

Dường như thư mục bắt đầu có thể không được tự động nhớ trên tất cả các nền tảng/máy tính để bàn, tùy thuộc vào việc bạn sử dụng hộp thoại có nguồn gốc hay không. Nếu hộp thoại tích hợp của Qt được sử dụng, thư mục bắt đầu phải luôn được tự động gửi lại trên tất cả các nền tảng (ngay cả giữa các lần xâm nhập của ứng dụng). Để thử hộp thoại không có nguồn gốc, làm:

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

Ngoài ra, bạn có thể sử dụng QFileDialog constructor, mà sẽ luôn tạo một hộp thoại không có nguồn gốc:

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

Cám ơn bạn trả lời, nhưng nó không hoạt động. Nó cho tôi điều này: TypeError: đối số 3 của QFileDialog.getOpenFileName() có một kiểu không hợp lệ. Tôi đang sử dụng PyQt4, quên nói. –

+0

@liaozd. Xin lỗi, 'None' sẽ chỉ hoạt động với Python3 - sử dụng một chuỗi rỗng thay thế (làm việc với cả Python2 và Python3). – ekhumoro

+0

có Tôi đang sử dụng python2.7 và PyQt4 trong CentOS6.4 của tôi, nhưng cách chuỗi rỗng dường như không làm việc cho tôi, nó luôn luôn mở thư mục kịch bản python là vị trí mặc định. –

Các vấn đề liên quan