我正在撰寫一個 GUI,要求用戶選擇要打開的多個檔案。為此,我使用 QFileDialog。我需要跟蹤用戶選擇檔案的順序,這可能嗎?
我有以下內容:
filepath, _ = QFileDialog.getOpenFileNames(self, "Open File", "", "CSV Files(*.csv);;All Files (*)")
但檔案路徑包含檔案的路徑,按照我在檔案夾中找到它們的順序排列,而不取決于選擇順序。我知道我可以要求用戶一次選擇一個檔案,但是要打開許多檔案,這對用戶來說變得很麻煩。
uj5u.com熱心網友回復:
默認情況下,靜態 QFileDialog 函式將顯示本機檔案對話框。似乎在您的系統上,本機檔案對話框會自動對所選檔案進行排序(并非所有平臺都如此)。但是,Qt 的內置檔案對話框沒有這種行為,所以一個簡單的解決方法是改用它:
filepaths, _ = QFileDialog.getOpenFileNames(
self, "Open File", "", "CSV Files(*.csv);;All Files (*)",
options=QFileDialog.DontUseNativeDialog)
print('\n'.join(filepaths))
示例輸出:
/home/foo/tmp/mbe-issue.csv
/home/foo/tmp/data.csv
/home/foo/tmp/test.csv
/home/foo/tmp/category_list.csv
/home/foo/tmp/data2.csv
此行為沒有明確記錄,但它適用于我同時使用 Qt-5.15.6 和 Qt-6.4.0,因此它似乎是一個穩定的功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517803.html
標籤:Python排序pyqt5qfile对话框获取打开文件名
上一篇:python-如何根據自己在PythonPandas中的排序思想按字串列對具有重復值的DataFrame進行排序?
