如何在QFileDialog中仅显示含指定关键词的文件?
实现QFileDialog只显示含"spam"的文件
嘿,这个需求很好解决!你只需要给QFileDialog设置一个通配符过滤器,就能轻松过滤出文件名包含"spam"的文件。我把你的代码修改了一下,同时给你解释下逻辑:
修改后的完整代码
from PyQt5.QtWidgets import (QApplication, QMainWindow, QFileDialog) import sys class Window(QMainWindow): def __init__(self): super().__init__() # 用super()调用父类构造函数更简洁哦 dialog = QFileDialog() # 设置过滤器:匹配任何文件名中包含"spam"的文件 dialog.setNameFilter("包含spam的文件 (*spam*)") # 要是你想限定文件类型,比如只看txt文件,可以改成这样: # dialog.setNameFilter("包含spam的TXT文件 (*spam*.txt)") dialog.exec() app = QApplication(sys.argv) window = Window() window.show() app.exec_()
关键细节说明
setNameFilter()方法里的*spam*是通配符规则:*代表任意长度的任意字符,所以*spam*就能匹配所有文件名里包含"spam"的文件——不管spam在文件名开头、中间还是结尾都能命中。- 如果需要多套过滤规则供选择,你可以用
setNameFilters()(注意是复数形式),传入一个规则列表,比如:
这样用户就能在对话框的过滤器下拉菜单里切换不同的过滤选项啦。dialog.setNameFilters([ "包含spam的所有文件 (*spam*)", "包含spam的TXT文件 (*spam*.txt)", "所有文件 (*)" ])
内容的提问来源于stack exchange,提问作者ignoring_gravity
相关产品推荐
相关产品推荐

