当前位置: 首页 > news >正文

网站建设ppt下载html编辑器的使用方法

网站建设ppt下载,html编辑器的使用方法,怎么利用网站开发app,芜湖网站设计公司文章目录 简介文件夹对话框文件映射组件完整组件 简介 我们的目的是做一个像下面这样的工具#xff0c;前面两个输入框#xff0c;用于输入源路径和目标路径#xff0c;下面的图片、视频、音乐表示在目标路径中创建的文件夹#xff0c;后面的文件后缀#xff0c;表示将这… 文章目录 简介文件夹对话框文件映射组件完整组件 简介 我们的目的是做一个像下面这样的工具前面两个输入框用于输入源路径和目标路径下面的图片、视频、音乐表示在目标路径中创建的文件夹后面的文件后缀表示将这类文件移动到对应的文件夹中加减号可以新增或删除文件夹。 文件夹对话框 第一步实现源路径和目标路径的输入输出从而需要自定义一个组件代码如下其及具体实现逻辑可以参考自定义文件选择按钮 import tkinter as tk import tkinter.ttk as ttk from tkinter.filedialog import (askopenfilename,askopenfilenames, askdirectory, asksaveasfilename) from tkinter.colorchooser import askcolorclass DialogButton(ttk.Frame):def __init__(self, master, height, widthL, widthR, logtype, labelNone, textNone, frmDct{}, btnDct{}, enyDct{}, logDct{}):w widthL widthRsuper().__init__(master, heightheight, width w, **frmDct)self.pack(filltk.X)self.text tk.StringVar() if not text else textttk.Entry(self, widthwidthL, textvariableself.text, **enyDct).pack(sidetk.LEFT, fill tk.X, expandTrue)ttk.Button(self, widthwidthR, textself.setLabel(logtype, label),command self.Click, **btnDct).pack(sidetk.RIGHT, padx5)self.logtype logtypeself.logDct logDctdef setLabel(self, key, labelNone):if label:return labellabelDct {文件 : 选择文件,文件夹 : 选择路径,多文件 : 选择多个文件,保存 : 存储路径,颜色 : 选择颜色,}return labelDct[key]def Click(self):typeDct {文件 : askopenfilename,文件夹: askdirectory,多文件: askopenfilenames,保存 : asksaveasfilename,颜色 : askcolor,}text typeDct[self.logtype](**self.logDct)if self.logtype 颜色:text text[1]self.text.set(text)def get(self):return self.text.get()def set(self, txt):self.text.set(txt)文件映射组件 关于文件夹整理这个功能此前其实做过无图形界面的版本 Python整理下载文件夹第一步自然是做一个文件映射字典 F_DCT {图片 : [.jpg, .png, .jpeg, .gif],视频 : [.mp4, .mkv],音乐 : [.mp3, .wav],文档 : [.pdf], 文献 : [.caj],文本 : [.csv, .txt],源码 : [.py, .c, .cpp, .php],office: [.docx,.xlsx, .pptx, .doc, .ppt, .xls],压缩包: [.zip, .tgz, .rar, .tar, .7z, .gz],安装包: [.msi, .exe], }然后就是工具的核心内容文件映射组件主要由左右两部分组成左侧是文件夹名右侧是对应的文件后缀。从这两个子组件出发可以为其设置初始化参数以及方法。先看源码再逐段解析 import tkinter as tk import tkinter.ttk as ttk from ctrls import DialogButton import os import shutil pJoin os.path.join pExist os.path.existsfrom pathlib import Pathclass ExFolder(ttk.Frame):def __init__(self, master, folderNone, exNone, dstNone, **options):super().__init__(master, **options)self.pack()self.folder tk.StringVar()if folder : self.setFolder(folder)self.ex tk.StringVar()if ex : self.setEx(ex)self.setDst(dst)self.initWidgets()def initWidgets(self):ttk.Entry(self, textvariableself.folder, width10).pack(sidetk.LEFT, padx2) ttk.Entry(self, textvariableself.ex).pack(sidetk.LEFT, filltk.X, expandTrue)def getFolder(self):return self.folder.get()def setFolder(self, f):self.folder.set(f)def getEx(self):exs self.ex.get().split(,)for i in range(len(exs)):exs[i] exs[i].strip()return exsdef setEx(self, exs):if type(exs)list:exs , .join([ex.strip() for ex in exs])self.ex.set(exs)def mvFile(self, src):try:shutil.move(src, self.dst)except Exception as e:self.err print(e)# 设置目标文件夹def setDst(self, dst):if not dst:self.dst Nonereturnself.dst pJoin(dst, self.getFolder())if not pExist(self.dst):os.makedirs(self.dst)self.errs {}首先folder和ex分别是左右两个组件对应的可变文本为了便于更新和调用类中设计了两组、四对便携方法getFolder, setFolder和getEx和setEx。由于Folder中的内容就是文件夹本身所以设置和读取方法仅仅是StringVar的二次封装而ex中的内容则不然需要对文本进行分割并且实现字符串到列表的转换。 mvFile和setDst是组件的核心功能分别用于设置目标路径并移动。之所以为目标文件夹设置安排了一个独立方法是因为目标文件夹不一定存在可能涉及到递归创建的过程。 完整组件 最后是整个组件的布局源码如下其中撤销功能并未实现。 class FolderTools(ttk.Frame):def __init__(self, master, fDctF_DCT, **options):super().__init__(master, **options)self.pack()self.fDct fDctself.initWidgets()self.fEnys []self.exEnys []def setDct(self, fDct):self.fDct fDctself.exDct {}for k,v in self.fDct.items():exDct.update({ex:k for ex in v})def initWidgets(self):self.exForders []pDct dict(sidetk.TOP, expandTrue, filltk.X)self.srcFolder DialogButton(self, 5, 25, 8, 文件夹, label源路径)self.srcFolder.pack(**pDct)self.dstFolder DialogButton(self, 5, 25, 8, 文件夹, label目标路径)self.dstFolder.pack(**pDct)btns ttk.Frame(self)btns.pack(**pDct)ttk.Button(btns, text➕ , commandself.btnAddFolder).grid(row0,column0)ttk.Button(btns, text➖, commandself.btnDelFolder).grid(row0,column1)ttk.Button(btns, text移动, commandself.btnMove).grid(row0,column2)ttk.Button(btns, text撤销, commandself.btnMove).grid(row0,column3)self.exFrm ttk.LabelFrame(self, text文件夹映射表)self.exFrm.pack(**pDct)for k, v in self.fDct.items():self.addFolders(self.exFrm, k, v)def btnAddFolder(self):self.addFolders(self.exFrm, None, None)def addFolders(self, frm, folder, exs):ef ExFolder(frm, folder, exs)ef.pack(sidetk.TOP, expandTrue, filltk.X, padx2, pady1)self.exForders.append(ef)def btnDelFolder(self):if len(self.exForders) 0: returnself.exForders[-1].pack_forget()del self.exForders[-1]def setExDct(self):self.exDct {}for ef in self.exForders:self.exDct.update({key:ef for key in ef.getEx()})def btnMove(self):src self.srcFolder.get()dst self.dstFolder.get()if dst: dst src# 设置后缀映射字典 exExFolderexDct {}for ef in self.exForders:exDct.update({ex:ef for ex in ef.getEx()})ef.setDst(dst) # 设置目标文件夹files os.listdir(src)for f in files:p pJoin(src, f)ex Path(p).suffix.lower()if ex in exDct:exDct[ex].mvFile(p)三个已经实现的功能按钮➕用于新增一个文件夹映射组件➖则移除最后一个映射组件。移除组件时需要注意不仅仅要把组件解绑还要把组件对应的实例删掉。 核心功能被绑定在移动按钮上首先读取源路径和目标路径如果目标路径未输入就在源路径下工作。 接下来将文件映射组件重新拆解为映射字典最后调用对应组件的mvFile方法实现所有文件的移动。
http://www.hkea.cn/news/14503627/

相关文章:

  • 做视频卖给视频网站天元建设集团有限公司在哪个区
  • 无锡住房和城乡建设部网站成都旅游景点有哪些
  • 百度站长提交网址夹江网站建设
  • 做教育app的网站有哪些内容杭州网站界面设计
  • 成都市公园城市建设局网站广州五屏网站建设
  • 绿色能源网站模板毕节市建设厅网站
  • 网站权重怎么做wordpress搬家换域名不换服务器
  • 网站建设优惠php网站开发案例教程 dvd
  • 上海专业网站建设服网站开发项目策划
  • 免费建立英文网站wordpress获取用户角色
  • 网站建设功能需求表微企点做网站视频
  • 外部门户网站首页网站备案和备案的区别吗
  • 音乐网站页面设计网站建设毕业设计综述
  • 东莞整合网站建设开发贵阳网站建设制作
  • wordpress中文下载站商城网站开发那家好
  • 前端网站开发培训重庆网站排名公司
  • 网剧推广一次5元长沙百度seo
  • 旅游网站建设的方向做专利网站的重要点
  • 网页制作模板的网站网站的关键词在哪设置
  • 做视频网站流量费高吗疏肝益阳胶囊有哪些功效与作用
  • 贵阳哪家网站做优化排名最好wordpress获取动态页面
  • 网站中备案与不备案的区别陕西网站建设优化建站
  • 网站建设字体颜色代码做网站用python还是php
  • 足球网站模板下载怎样创建公众号
  • 中国精品课程网站开发网站定制
  • 南京市建设执业资格中心网站2022一级造价停考
  • 网站建设费用的财务核算wordpress 工作原理
  • 做网站和维护网站wordpress 类似 免费
  • 天蓝色美容网站网站建设代码容易出错
  • 阜宁网站建设服务商wordpress媒体库 插件