python - 如何从文件对话框中选择多个文件并同时打开并访问它们
问题描述
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog
from PyQt5 import QtCore
import sys
def dialog():
file , check = QFileDialog.getOpenFileName(None, "QFileDialog.getOpenFileName()",
"", "All Files (*);;Python Files (*.py);;Text Files (*.txt)")
if check:
print(file)
app = QApplication(sys.argv)
win = QMainWindow()
win.setGeometry(400,400,300,300)
win.setWindowTitle("CodersLegacy")
button = QPushButton(win)
button.setText("Press")
button.clicked.connect(dialog)
button.move(50,50)
win.show()
sys.exit(app.exec_())
这是我按下按钮时选择并打开单个文件的代码。但是,如何将其更改为选择多个文件并同时打开。我尝试了语法,不幸的是,我找不到。
解决方案
您必须使用该QFileDialog::getOpenFileNames()
方法,返回的元组的第二个值不是检查,而是指示使用的过滤器的字符串,如果要验证,则必须使用文件名的大小:
filenames, _ = QFileDialog.getOpenFileNames(
None,
"QFileDialog.getOpenFileNames()",
"",
"All Files (*);;Python Files (*.py);;Text Files (*.txt)",
)
if filenames:
for filename in filenames:
print(filename)
推荐阅读
- sockets - 使用 hackney 和 HTTPoison 在连接池级别设置请求超时
- installation - Azure DevOps 服务器配置向导 - 设置 - 报告 - TF400402 错误
- php - ESP01-Apache 服务器使用 Post 发送数据到 .php 文件
- android - 字节缓冲区的大小和形状不匹配 TFLite Android Kotlin
- sorting - 除最后一个元素外的排序数组
- javascript - Javascript 等效于 HtmlWebpackPlugin?
- angular - Angular 微前端与 Angular 材料的联合
- vue.js - 即使移动到其他组件后,Router View 也会继续显示组件信息
- c - 如何使用 sd_bus_* 通过 tcp 连接到远程 dbus
- azure - 带有 httpd + LoadBalancer 的 Terraform Azure 2xLinux VM 不起作用