资源管理器 # Explorer

远程管理linux服务器的xftp到期了,相比命令模式,无非就是多了GUI界面,自己尝试做个远程管理脚本,配上GUI,也应该够用了。

难点在于鼠标双击更新列表给Listview,前期拿本地资源管理练手。

树形资源管理能轻松实现,qt本身自带Qtreeview,但总归有点不习惯


 

import os
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QStringListModel
import string

def root():   #扫描盘符
    ss = []
    for a in string.ascii_uppercase:
        b = a + ':\\'
        if os.path.exists(b):
            ss.append(b)
    return ss

class XWindon(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFixedSize(800,600)
        self.setWindowTitle('Explorer---by 易酆')
        self.view = QListView()
        self.model = QStringListModel()
        self.path = ''
        self.text = QLineEdit()
        self.text.setReadOnly(True)
        self.text.setText(self.path)    #用来显示更新的地址
        self.ui()
        self.main(root())          #显示盘符列表
        self.show()

    def ui(self):
        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.text)
        self.vbox.addWidget(self.view)
        self.center_widget = QWidget()
        self.center_widget.setLayout(self.vbox)
        self.setCentralWidget(self.center_widget)

    def main(self, stringlist):         #显示盘符列表
        self.model.setStringList(stringlist)
        self.view.setModel(self.model)
        self.view.doubleClicked.connect(self.refresh)      #双击条目后显示被双击的盘符下所有文件夹和文件
    def refresh(self, item):                            #逐层打开目录并逐层返回上层目录
        ss=['.','..']
        if os.path.isdir(self.path+item.data()):
            self.path1 = self.path + item.data()
            self.path1 = os.path.realpath(self.path1)
        else:
            self.path1 = self.path

        self.model = None
        model = QStringListModel()
        view = QListView()
        if os.path.realpath(self.path) in root() and item.data() == '..':
#            print('aaaa')
            model.setStringList(root())
            view.setModel(model)
            self.vbox.replaceWidget(self.view, view)
            self.view = view
            view.doubleClicked.connect(self.refresh)
            self.path1 = ''
        elif os.path.exists(self.path1):
            for name in os.listdir(self.path1):
                ss.append(name)
            model.setStringList(ss)
            view.setModel(model)
            self.vbox.replaceWidget(self.view, view)
            self.view = view
            view.doubleClicked.connect(self.refresh)
            self.path1 += '\\'
        else:
            pass
        self.path = self.path1
        self.text.setText(self.path)


if __name__=='__main__':
    app = QApplication(sys.argv)
    x = XWindon()
    sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值