Skip to content

Commit 0d29f50

Browse files
committed
Add 03-12-03-02
QFileDialog-接受模式、选项、视图模式、文件模式
1 parent 86a7398 commit 0d29f50

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import sys
2+
3+
from PySide6 import QtWidgets
4+
5+
"""
6+
QFileDialog 功能作用
7+
8+
============================== 接受模式 ========================
9+
通过接受模式来决定对话框用于打开文件还是保存文件
10+
11+
.setAcceptMode(mode: QFileDialog.AcceptMode) 设置接受模式
12+
.acceptMode() -> QFileDialog.AcceptMode 获取当前的接受模式
13+
14+
AcceptMode具体有打开和保存两种:
15+
QFileDialog.AcceptOpen 打开文件,默认值
16+
QFileDialog.AcceptSave 保存文件
17+
18+
=============================== 选项 ==========================
19+
可以通过对options属性的设置来调整对话框的外观(详见附录QFileDialog.Options枚举值)
20+
默认情况下禁用所有选项
21+
尽可能在更改对话框属性或显示对话框前设置这些选项,因为对话框已经可见时再设置选项可能不会立即生效
22+
23+
.setOptions(options: QFileDialog.Options) 设置选项,多个选项间使用|连接
24+
.setOption(option: QFileDialog.Option, on: bool = True) 设置选项,通过on表示该选项的开关
25+
.options() -> QFileDialog.Options 获取已设置的选项
26+
27+
QFileDialog.Options枚举值详见附录
28+
29+
============================== 视图模式 ========================
30+
可以通过改变视图模式属性来控制对话框中显示的详细程度
31+
32+
.setViewMode(mode: QFileDialog.ViewMode) 设置视图模式(默认为Detail)
33+
viewMode() -> QFileDialog.ViewMode 获取视图模式
34+
35+
视图模式枚举值有两种:
36+
QFileDialog.Detail
37+
QFileDialog.List
38+
39+
============================= 文件模式 ========================
40+
设置文件模式属性,以定义用户希望在对话框中选择的项目的数量和类型
41+
42+
.setFileMode(mode: QFileDialog.FileMode) 设置文件模式,默认为AnyFile
43+
.fileMode() -> QFileDialog.FileMode 获取文件模式
44+
45+
QFileDialog.FileMode枚举值详见附录
46+
47+
"""
48+
49+
50+
class MyWidget(QtWidgets.QWidget):
51+
def __init__(self, *args, **kwargs):
52+
super().__init__(*args, **kwargs)
53+
self.setWindowTitle("QFileDialog-功能测试")
54+
self.dialog = QtWidgets.QFileDialog(self)
55+
self.setup_dialog() # 在展示对话框前先完成设置
56+
self.setup_ui()
57+
58+
def setup_dialog(self) -> None:
59+
"""设置文件对话框"""
60+
61+
# 接受模式
62+
self.dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen) # 文件将用于打开
63+
64+
# 设置选项
65+
self.dialog.setOptions(
66+
QtWidgets.QFileDialog.DontUseCustomDirectoryIcons # 只使用默认目录图标(提高性能)
67+
| QtWidgets.QFileDialog.DontConfirmOverwrite # 当用户选中现有文件时则无需确认
68+
)
69+
70+
# 设置视图模式
71+
# self.dialog.setViewMode(QtWidgets.QFileDialog.Detail) # 显示详细信息(默认)
72+
self.dialog.setViewMode(QtWidgets.QFileDialog.List) # 显示列表信息
73+
74+
# 文件模式
75+
self.dialog.setFileMode(QtWidgets.QFileDialog.ExistingFile) # 只能选择单个现有文件
76+
77+
def setup_ui(self) -> None:
78+
"""设置界面"""
79+
80+
self.resize(800, 600)
81+
browse_btn = QtWidgets.QPushButton("选择单个文件", self)
82+
browse_btn.move(150, 200)
83+
browse_btn.clicked.connect(self.dialog.open) # type: ignore
84+
info_le = QtWidgets.QLineEdit(self)
85+
info_le.move(150, 250)
86+
info_le.setMinimumWidth(600)
87+
self.dialog.fileSelected.connect(lambda path: info_le.setText(path)) # type: ignore
88+
89+
90+
if __name__ == "__main__":
91+
app = QtWidgets.QApplication(sys.argv)
92+
window = MyWidget()
93+
window.show()
94+
sys.exit(app.exec())

0 commit comments

Comments
 (0)