最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python自制一個(gè)資源管理器

 更新時(shí)間:2025年02月19日 10:31:18   作者:席子哥哥的代碼庫(kù)  
這篇文章主要為大家詳細(xì)介紹了如何基于Python自制一個(gè)資源管理器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下

本文為大家詳細(xì)介紹了如何基于Python制作一個(gè)資源管理器,可以進(jìn)行簡(jiǎn)單的本地資源管理,有需要的可以參考下

最終效果圖

完整代碼

import sys
from PyQt5.QtWidgets import (
    QApplication, QMainWindow, QTreeView, QFileSystemModel, QSplitter, QTextEdit, QVBoxLayout, QWidget, QPushButton, QListWidget, QListWidgetItem, QHBoxLayout
)
from PyQt5.QtCore import QDir, QFileInfo
from PyQt5.QtGui import QIcon
 
class ResourceBrowser(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("資源瀏覽器")
        self.setGeometry(100, 100, 800, 600)
        self.setStyleSheet("""
            QMainWindow {
                background-color: #2E3440;
            }
            QListWidget {
                background-color: #3B4252;
                color: #ECEFF4;
                border: 1px solid #4C566A;
            }
            QPushButton {
                background-color: #81A1C1;
                color: #ECEFF4;
                padding: 5px;
                border: none;
            }
            QPushButton:hover {
                background-color: #5E81AC;
            }
        """)
 
        # 當(dāng)前目錄路徑
        self.current_dir = QDir.rootPath()
 
        # 創(chuàng)建主布局
        main_widget = QWidget()
        self.setCentralWidget(main_widget)
        layout = QVBoxLayout(main_widget)
 
        # 創(chuàng)建分割器
        splitter = QSplitter()
        layout.addWidget(splitter)
 
        # 左側(cè)布局
        left_widget = QWidget()
        left_layout = QVBoxLayout(left_widget)
 
        # 返回上一級(jí)按鈕
        self.btn_back = QPushButton("返回上一級(jí)")
        self.btn_back.clicked.connect(self.go_back)
        left_layout.addWidget(self.btn_back)
 
        # 創(chuàng)建文件系統(tǒng)模型
        self.model = QFileSystemModel()
        self.model.setRootPath("")  # 設(shè)置根路徑為空,顯示所有磁盤(pán)
 
        # 創(chuàng)建樹(shù)視圖
        self.tree_view = QTreeView()
        self.tree_view.setModel(self.model)
        self.tree_view.setRootIndex(self.model.index(""))  # 設(shè)置根目錄為空,顯示所有磁盤(pán)
        self.tree_view.clicked.connect(self.on_item_clicked)  # 點(diǎn)擊事件
        left_layout.addWidget(self.tree_view)
 
        # 將左側(cè)布局添加到分割器
        splitter.addWidget(left_widget)
 
        # 創(chuàng)建右側(cè)布局
        right_widget = QWidget()
        right_layout = QVBoxLayout(right_widget)
 
        # 創(chuàng)建右側(cè)文件列表
        self.file_list = QListWidget()
        self.file_list.itemDoubleClicked.connect(self.on_file_double_clicked)  # 雙擊文件事件
        right_layout.addWidget(self.file_list)
 
        # 創(chuàng)建文本編輯框用于顯示文件內(nèi)容
        self.text_edit = QTextEdit()
        self.text_edit.setReadOnly(True)  # 設(shè)置為只讀
        right_layout.addWidget(self.text_edit)
 
        # 將右側(cè)布局添加到分割器
        splitter.addWidget(right_widget)
 
        # 設(shè)置分割器初始比例
        splitter.setSizes([300, 500])
 
    def on_item_clicked(self, index):
        """處理樹(shù)視圖項(xiàng)的點(diǎn)擊事件"""
        file_path = self.model.filePath(index)
        if self.model.isDir(index):
            # 如果是文件夾,更新當(dāng)前目錄并顯示文件列表
            self.current_dir = file_path
            self.update_file_list(file_path)
 
    def update_file_list(self, dir_path):
        """更新右側(cè)文件列表"""
        self.file_list.clear()
        dir = QDir(dir_path)
        for file_info in dir.entryInfoList(QDir.Files | QDir.Dirs | QDir.NoDotAndDotDot):
            item = QListWidgetItem(file_info.fileName())
            if file_info.isDir():
                item.setIcon(QIcon.fromTheme("folder"))  # 文件夾圖標(biāo)
            else:
                item.setIcon(QIcon.fromTheme("text-x-generic"))  # 文件圖標(biāo)
            self.file_list.addItem(item)
 
    def on_file_double_clicked(self, item):
        """處理文件列表項(xiàng)的雙擊事件"""
        file_name = item.text()
        file_path = QDir(self.current_dir).filePath(file_name)
        if QFileInfo(file_path).isDir():
            # 如果是文件夾,更新當(dāng)前目錄并顯示文件列表
            self.current_dir = file_path
            self.update_file_list(file_path)
        else:
            # 如果是文件,顯示文件內(nèi)容
            try:
                with open(file_path, "r", encoding="utf-8") as file:
                    self.text_edit.setPlainText(file.read())
            except Exception as e:
                self.text_edit.setPlainText(f"無(wú)法讀取文件: {str(e)}")
 
    def go_back(self):
        """返回上一級(jí)目錄"""
        current_dir = QDir(self.current_dir)
        if current_dir.cdUp():  # 嘗試返回上一級(jí)目錄
            self.current_dir = current_dir.absolutePath()  # 獲取上一級(jí)目錄的絕對(duì)路徑
            self.update_file_list(self.current_dir)
            # 更新樹(shù)視圖的選中狀態(tài)
            index = self.model.index(self.current_dir)
            self.tree_view.setCurrentIndex(index)
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    browser = ResourceBrowser()
    browser.show()
    sys.exit(app.exec())

到此這篇關(guān)于基于Python自制一個(gè)資源管理器的文章就介紹到這了,更多相關(guān)Python資源管理器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)子類調(diào)用父類的方法

    Python實(shí)現(xiàn)子類調(diào)用父類的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)子類調(diào)用父類的方法,解決子類覆蓋父類初始化方法而出現(xiàn)的不確定問(wèn)題,可通過(guò)調(diào)用超類構(gòu)造方法的未綁定版本或者使用super函數(shù)來(lái)解決,需要的朋友可以參考下
    2014-11-11
  • PyGraphviz 安裝使用及注意事項(xiàng)

    PyGraphviz 安裝使用及注意事項(xiàng)

    PyGraphviz 是對(duì) Graphviz 的封裝,提供了 Python 接口的調(diào)用,這篇文章主要介紹了PyGraphviz 安裝使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Python基礎(chǔ)教程之錯(cuò)誤和異常的處理方法

    Python基礎(chǔ)教程之錯(cuò)誤和異常的處理方法

    程序在運(yùn)行時(shí),如果python解釋器遇到一個(gè)錯(cuò)誤,會(huì)停止程序的執(zhí)行,并且提示一些錯(cuò)誤信息,這就是異常,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之錯(cuò)誤和異常的處理方法,需要的朋友可以參考下
    2022-05-05
  • Python在畫(huà)圖時(shí)使用特殊符號(hào)的方法總結(jié)

    Python在畫(huà)圖時(shí)使用特殊符號(hào)的方法總結(jié)

    在制作圖表時(shí),如果遇到需要利用特殊符號(hào)進(jìn)行表示時(shí)該怎么辦呢?不用慌,這篇文章為大家總結(jié)了python畫(huà)圖中使用各種特殊符號(hào)的方式,需要的可以參考一下
    2022-04-04
  • Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的圖文解決辦法

    Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的圖文解決辦法

    這篇文章主要給大家介紹了關(guān)于Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的圖文解決辦法,閃退問(wèn)題通常是由于程序運(yùn)行過(guò)程中出現(xiàn)了未處理的異?;蝈e(cuò)誤,導(dǎo)致程序崩潰,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • pytest使用parametrize將參數(shù)化變量傳遞到fixture

    pytest使用parametrize將參數(shù)化變量傳遞到fixture

    這篇文章主要為大家介紹了pytest使用parametrize將參數(shù)化變量傳遞到fixture的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python版中國(guó)省市經(jīng)緯度

    Python版中國(guó)省市經(jīng)緯度

    這篇文章主要介紹了Python版中國(guó)省市經(jīng)緯度,需要的朋友可以參考下
    2020-02-02
  • python保存字典和讀取字典的實(shí)例代碼

    python保存字典和讀取字典的實(shí)例代碼

    這篇文章主要介紹了python保存字典和讀取字典的實(shí)例代碼,通過(guò)代碼給大家介紹了python 使用列表和字典存儲(chǔ)信息的相關(guān)代碼,需要的朋友可以參考下
    2019-07-07
  • 用Python給二維碼圖片添加提示文字

    用Python給二維碼圖片添加提示文字

    今天教各位小伙伴怎么用Python給二維碼圖片添加提示文字,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Python安裝第三方庫(kù)攻略(pip和Anaconda)

    Python安裝第三方庫(kù)攻略(pip和Anaconda)

    這篇文章主要介紹了Python安裝第三方庫(kù)攻略(pip和Anaconda),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論

阜平县| 云梦县| 清水河县| 铜梁县| 嘉禾县| 科尔| 屏东市| 瑞丽市| 丰镇市| 武穴市| 荃湾区| 成安县| 沾化县| 芦溪县| 大连市| 望都县| 伽师县| 礼泉县| 隆林| 拜城县| 台湾省| 文安县| 玛纳斯县| 紫金县| 宁都县| 洪洞县| 增城市| 黄大仙区| 崇阳县| 马尔康县| 竹北市| 苍山县| 鹤庆县| 莲花县| 罗平县| 兴化市| 故城县| 齐齐哈尔市| 沙洋县| 嘉祥县| 新野县|