如何解决PyQt5文件打开对话框
有什么方法可以通过pyqt5文件对话框打开一个文件夹
我尝试使用引号,我想打开一个包含子目录或子文件夹的文件夹或目录
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QFileDialog,QTextEdit,QPushButton,QLabel,QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.resize(800,600)
self.button1 = QPushButton('Open Project Folder')
self.button1.clicked.connect(self.get_folder)
self.labelImage = QLabel()
self.textEditor = QTextEdit()
layout = QVBoxLayout()
layout.addWidget(self.button1)
layout.addWidget(self.labelImage)
layout.addWidget(self.button2)
layout.addWidget(self.textEditor)
self.setLayout(layout)
def get_folder(self):
file_name,_ = QFileDialog.getOpenFileName(
self,'Project Data',r"","")
print(file_name)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())```
解决方法
QFileDialog有多种static functions可用,如果需要打开目录,请不要使用getOpenFileName
,而要使用getExistingDirectory()
。
从文档中可以看到,参数略有不同,并且
如果从python shell运行help(QtWidgets.QFileDialog.getExistingDirectory)
,则会看到完整的参数签名和以python语法编写的返回值。
getExistingDirectory(parent: QWidget = None,caption: str = '',directory: str = '',options: Union[QFileDialog.Options,QFileDialog.Option] = QFileDialog.ShowDirsOnly) -> str
最后一部分( -> str
)意味着只有一个返回值,即所选目录的 string (如果用户取消对话框,该值为空)。
def get_folder(self):
folder = QFileDialog.getExistingDirectory(
self,'Project Data','')
if folder:
print(folder)
我建议您始终学习正在使用的每个类的文档,并使用 official 文档;即使面向C ++,这些函数在PyQt上的名称也相同,并且在99%的情况下,它们的参数/返回值都是相同的。每当您有疑问或遇到有关错误参数或返回数据的问题时,都可以查看official PyQt文档或在Python shell中使用help(class.function)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。