返回

滚动-PYQT5滚动到Treeview python

发布时间:2022-07-20 09:39:30 245
# node.js

我想知道是否有人能告诉我我哪里出错了。我正在尝试使用先前选择的文件夹、展开、突出显示并滚动到视图中打开一个 Treeview。我已经成功使用了前两个选项。问题是滚动不起作用,您必须手动向下滚动才能找到展开/突出显示的文件夹。

据我了解,我需要将索引传递给 scrollto ,但这不起作用。

 index = self.tree.currentIndex()
 self.tree.scrollTo(index, QAbstractItemView.PositionAtBottom)

下面是完整的简单示例。请在硬盘驱动器下方添加一个文件夹以正确演示该问题。使用 self.last_opened_folder = "你的目录";

非常感谢。

import sys
from PyQt5.QtWidgets import QApplication, QFileSystemModel, QTreeView, QWidget, QVBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton,
                             QToolTip, QMessageBox, QLabel)
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'TEST'
        self.left = 0
        self.top = 0
        self.width = 640
        self.height = 480
        self.initUI()


    def initUI(self):
        self.last_opened_folder = "E:/z/1" # far down folder
        #
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        # Call Model
        self.model = QFileSystemModel(self)
        self.model.setRootPath("")
        self.model.setFilter(QtCore.QDir.AllDirs|QtCore.QDir.NoDotAndDotDot) # filters out directories only
        # Make Tree and load model
        self.tree = QTreeView(self)
        self.model.setRootPath('')
        self.tree = QTreeView()
        self.tree.setModel(self.model)

        self.tree.setExpanded(self.model.index(self.last_opened_folder), True)
        self.tree.setCurrentIndex(self.model.index(self.last_opened_folder)) # highlight
        index = self.tree.currentIndex()
        self.tree.scrollTo(index, QAbstractItemView.PositionAtBottom)
        # Format
        self.tree.expandAll()
        self.tree.setColumnWidth(0, 450)
        self.tree.setColumnHidden(1, True)
        self.tree.setAnimated(False)
        self.tree.setIndentation(20)
        self.tree.sortByColumn(0, Qt.AscendingOrder)


        windowLayout = QVBoxLayout()
        windowLayout.addWidget(self.tree)
        self.setLayout(windowLayout)

        self.show()



if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像