如何将PySide2中打印的QFileSystemModel对象信息转为常规可读格式?
PySide2中转换模型打印内容为可读形式的方法
当你执行以下代码时:
proxy = self.tree_view.model() print(proxy)
得到的输出是<PySide2.QtWidgets.QFileSystemModel(0x1f00bde4c60) at 0x000001F012D3F488>,这是Qt对象默认的字符串表示,包含类名、内存地址等信息。要转换成常规可读形式,可参考以下几种方法:
1. 获取模型的类名
如果只需要明确模型的类型,直接提取类名即可:
print(type(proxy).__name__) # 输出结果:QFileSystemModel
也可以用proxy.__class__.__name__得到同样结果。
2. 获取模型的具体业务信息
针对QFileSystemModel这类文件系统模型,调用它的内置方法就能获取实际业务相关的可读信息,比如根路径、文件属性等:
# 打印模型类型和根路径 print(f"模型类型:{type(proxy).__name__},根路径:{proxy.rootPath()}") # 查看根目录的具体信息 root_index = proxy.index(proxy.rootPath()) print(f"根目录名称:{proxy.fileName(root_index)},目录大小:{proxy.size(root_index)}字节")
3. 自定义对象的打印格式
如果需要长期统一自定义这类模型的输出格式,可以通过子类重写Qt模型类的__str__方法实现:
from PySide2.QtWidgets import QFileSystemModel class ReadableFileSystemModel(QFileSystemModel): def __str__(self): return f"ReadableFileSystemModel(类型: {self.__class__.__name__}, 根路径: {self.rootPath()}, 对象地址: {hex(id(self))})" # 使用自定义类创建模型 model = ReadableFileSystemModel() model.setRootPath("/") print(model) # 输出示例:ReadableFileSystemModel(类型: ReadableFileSystemModel, 根路径: /, 对象地址: 0x1f00bde4c60)
内容的提问来源于stack exchange,提问作者Dobromir Petushev
相关产品推荐
相关产品推荐

