奇怪的错误,加上这一行就出错

发布于 2022-09-12 13:57:04 字数 3437 浏览 12 评论 0

奇怪的错误,加上这一行就出错
下面的代码加上self.treeview1.clicked.connect(self.on_clicked)
这一行就出错,AttributeError: 'MainWidget' object has no attribute 'treeview1'
恳请高人指点!

import sys
import os
from PyQt5 import QtCore
from PyQt5.Qt import *

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super(MainWidget, self).__init__(parent)
 
        #获取系统所有文件
        self.model01 = QFileSystemModel()
        #进行筛选只显示文件夹,不显示文件和特色文件
        self.model01.setFilter(QtCore.QDir.Dirs|QtCore.QDir.NoDotAndDotDot)
        self.model01.setRootPath('')
 
        #定义创建左边窗口
        self.treeView1 = QTreeView(self)
        self.treeView1.setModel(self.model01)
        #for col in range(1, 4):
        #    self.treeView1.setColumnHidden(col, True)
        self.treeView1.setColumnHidden(2, True)
        #self.treeView1.doubleClicked.connect(self.initUI)
        self.treeview1.clicked.connect(self.on_clicked)#
 
        #定义创建右边窗口
        self.model02 = QStandardItemModel()
        #self.model02 = QDirModel()
        self.treeView2 = QTreeView(self)
        self.treeView2.setModel(self.model02)
        self.treeView2.clicked.connect(self.itemClicked)
 
        #将创建的窗口进行添加
        self.layout = QHBoxLayout()
        self.layout.addWidget(self.treeView1)
        self.layout.addWidget(self.treeView2)
        self.setLayout(self.layout)
 
 
        self.cdpath(r'e:\downloads\Temp')
    def on_clicked(self, index):
        path = self.model01.fileInfo(index).absoluteFilePath()
        self.treeView2.setRootIndex(self.model02.setRootPath(path))
        
    def initUI(self, Qmodelidx):
        #每次点击清空右边窗口数据
        self.model02.clear()
        #定义一个数组存储路径下的所有文件
        PathData = []
        #获取双击后的指定路径
        filePath = self.model01.filePath(Qmodelidx)
        # List窗口文件赋值
        PathDataName = self.model02.invisibleRootItem()
        #拿到文件夹下的所有文件
        PathDataSet = os.listdir(filePath)
        #进行将拿到的数据进行排序
        PathDataSet.sort()
        #遍历判断拿到的文件是文件夹还是文件,Flase为文件,True为文件夹
        for Data in range(len(PathDataSet)):
            if os.path.isdir(filePath + '\\' + PathDataSet[Data]) == False:
                PathData.append(PathDataSet[Data])
        #将拿到的所有文件放到数组中进行右边窗口赋值。
        for got in range(len(PathData)):
            gosData = QStandardItem(PathData[got])
            PathDataName.setChild(got, gosData)
    def itemClicked(self, Qmodelidx):
        text = self.model02.data(Qmodelidx)
        print(text)
        indexItem = self.model02.index(Qmodelidx.row(), 0, Qmodelidx.parent())
        #print(indexItem)
        fileName = self.model02.data(indexItem)
        print(fileName)
        filePath = self.model01.filePath(self.treeView1.currentIndex())
        #filePath = self.model01.currentItem()
        #index=self.model01.currentIndex()
        print(filePath)
        print(self.treeView1.currentIndex())
    def cdpath(self, path):
        if os.path.exists(path):
            #pass
            index = self.model01.index(str(path))
            print(path,index,self.model01.filePath(index))
            #self.treeView1.setRootIndex(self.model01.index(os.path.dirname(str(path))))
            self.treeView1.scrollTo(index)
            self.treeView1.setCurrentIndex(index)
            self.initUI(index)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWidget()
    window.resize(600, 400)
    window.show()
    sys.exit(app.exec_())

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

没有伤那来痛 2022-09-19 13:57:04

大小写问题吧,你定义的是

treeView1

V 是 大写啊

生生漫 2022-09-19 13:57:04

大小写????

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文