class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.resize(600, 300) self.model = QDirModel(self) # 1 self.model.setReadOnly(False) self.model.setSorting(QDir.Name | QDir.IgnoreCase) self.tree = QTreeView(self) # 2 self.tree.setModel(self.model) self.tree.clicked.connect(self.show_info) self.index = self.model.index(QDir.currentPath()) self.tree.expand(self.index) self.tree.scrollTo(self.index) self.info_label = QLabel(self) # 3 self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.tree) self.v_layout.addWidget(self.info_label) self.setLayout(self.v_layout) def show_info(self): # 4 index = self.tree.currentIndex() file_name = self.model.fileName(index) file_path = self.model.filePath(index) file_info = 'File Name: {}\nFile Path: {}'.format(file_name, file_path) self.info_label.setText(file_info)
class MyCentralWidget(QWidget): def __init__(self, parent=None, flags=Qt.WindowFlags()): super().__init__(parent=parent, flags=flags) self.initUI() self.pix = '' def initUI(self): hbox = QHBoxLayout(self) self.lefttopframe = MyPixmap() # self.lefttopframe.frameWidth = 40 self.lefttopframe.setMinimumWidth(150) self.lefttopframe.setFrameShape(QFrame.StyledPanel) # leftbottomframe = QFrame(self) self.dirmodel = QDirModel() qtree = QTreeView() qtree.setMaximumWidth(300) qtree.setModel(self.dirmodel) qtree.setRootIndex( self.dirmodel.index(QDir.currentPath() + '/mapeditor/Maps')) qtree.doubleClicked.connect(self.tree_clicked) # leftbottomframe.setFrameShape(QFrame.StyledPanel) splitter = QSplitter(Qt.Vertical) splitter.handleWidth = 20 splitter.addWidget(self.lefttopframe) splitter.addWidget(qtree) self.rightframe = MyPixmap(self) # rightframe.set_tileset() self.rightframe.setFrameShape(QFrame.StyledPanel) splitter2 = QSplitter(Qt.Horizontal) splitter2.addWidget(splitter) splitter2.addWidget(self.rightframe) hbox.addWidget(splitter2) self.setLayout(hbox) def tree_clicked(self, idx): print(self.dirmodel.fileName(idx)) self.rightframe.set_tileset(QDir.currentPath() + '/mapeditor/' + self.dirmodel.filePath(idx)) def paintEvent(self, e): painter = QPainter(self) if self.pix != '': painter.drawPixmap(self.lefttopframe.rect(), self.pix) def set_tileset(self, path): # print ('set tileset %s' % path) self.path = path self.pix = QPixmap() self.pix.load(path)