Tkinter 之文件管理器
一、效果图







二、功能描述
1、打开文件菜单中的打开按钮,可以选择目录。
2、可以查看各种类型的图片。
3、可以编辑文本。
4、显示行号功能,可改变目录显示的宽度。
三、使用的标签
1、Menu
2、Frame
3、PanedWindow
4、Treeview
5、Text
6、Scrollbar
四、布局代码
# -*- coding: utf-8 -*-
__author__ = 'Yang' from tkinter import *
from tkinter import ttk, messagebox, filedialog
import os
from PIL import Image, ImageTk
from threading import Thread class Application_UI(object): # path = r"E:\\python开发工具\\project\\tkinter"
path = os.path.abspath(".")
file_types = [".png", ".jpg", ".jpeg", ".ico", ".gif"]
scroll_visiblity = True font = 11
font_type = "Courier New" def __init__(self):
# 设置UI界面
window = Tk()
self.root = window
win_width = 800
win_height = 600 screen_width, screen_height = window.maxsize()
x = int((screen_width - win_width) / 2)
y = int((screen_height - win_height) / 2)
window.title("文件管理工具")
window.geometry("%sx%s+%s+%s" % (win_width, win_height, x, y)) menu = Menu(window)
window.config(menu = menu) selct_path = Menu(menu, tearoff = 0)
selct_path.add_command(label = "打开", accelerator="Ctrl + O", command = self.open_dir)
selct_path.add_command(label = "保存", accelerator="Ctrl + S", command = self.save_file) menu.add_cascade(label = "文件", menu = selct_path) about = Menu(menu, tearoff = 0)
about.add_command(label = "版本", accelerator = "v1.0.0")
about.add_command(label = "作者", accelerator = "样子")
menu.add_cascade(label = "关于", menu = about) # 顶部frame
top_frame = Frame(window, bg = "#fff")
top_frame.pack(side = TOP, fill = X)
label = Label(top_frame, text = "当前选中路径:", bg = "#fff")
label.pack(side = LEFT) self.path_var = StringVar()
self.path_var.set("无")
label_path = Label(top_frame, textvariable = self.path_var, bg = "#fff", fg = "red", height = 2)
label_path.pack(anchor = W) paned_window = PanedWindow(window, showhandle = False, orient=HORIZONTAL)
paned_window.pack(expand = 1, fill = BOTH) # 左侧frame
self.left_frame = Frame(paned_window)
paned_window.add(self.left_frame) self.tree = ttk.Treeview(self.left_frame, show = "tree", selectmode = "browse")
tree_y_scroll_bar = Scrollbar(self.left_frame, command = self.tree.yview, relief = SUNKEN, width = 2)
tree_y_scroll_bar.pack(side = RIGHT, fill = Y)
self.tree.config(yscrollcommand = tree_y_scroll_bar.set)
self.tree.pack(expand = 1, fill = BOTH) # 右侧frame
right_frame = Frame(paned_window)
paned_window.add(right_frame) # 右上角frame
right_top_frame = Frame(right_frame)
right_top_frame.pack(expand = 1, fill = BOTH) self.number_line = Text(right_top_frame, width = 0, takefocus = 0, border = 0, font = (self.font_type, self.font), cursor = "")
self.number_line.pack(side = LEFT, fill = Y) # 右上角Text
text = Text(right_top_frame, font = (self.font_type, self.font), state = DISABLED, cursor = "", wrap = NONE)
self.text_obj = text
text_x_scroll = Scrollbar(right_frame, command = text.xview, orient = HORIZONTAL)
text_y_scroll = Scrollbar(right_top_frame, command = text.yview)
self.text_scroll_obj = text_y_scroll
text.config(xscrollcommand = text_x_scroll.set, yscrollcommand = text_y_scroll.set)
text_y_scroll.pack(side = RIGHT, fill = Y)
text_x_scroll.pack(side = BOTTOM, fill = X)
text.pack(expand = 1, fill = BOTH) # 右下角frame
right_bottom_frame = Frame(right_frame)
right_bottom_frame.pack(side = BOTTOM, fill = X) self.folder_img = PhotoImage(file = r"./image/folder.png")
self.file_img = PhotoImage(file = r"./image/text_file.png") php_img = PhotoImage(file = r"./image/php.png")
python_img = PhotoImage(file = r"./image/python.png")
image_img = PhotoImage(file = r"./image/img.png") # 设置文件图标
self.icon = {".php": php_img, ".py": python_img, ".pyc": python_img, ".png": image_img, ".jpg": image_img, ".jpeg": image_img, ".gif": image_img, ".ico": image_img} # 加载目录文件
self.load_tree("", self.path)
self.tree.bind("<<TreeviewSelect>>", lambda event: self.select_tree())
text.bind("<MouseWheel>", lambda event : self.update_line()) self.number_line.bind("<FocusIn>", self.focus_in_event)
self.number_line.bind('<Button-1>', self.button_ignore)
self.number_line.bind('<Button-2>', self.button_ignore)
self.number_line.bind('<Button-3>', self.button_ignore)
self.number_line.bind('<B1-Motion>', self.button_ignore)
self.number_line.bind('<B2-Motion>', self.button_ignore)
self.number_line.bind('<B3-Motion>', self.button_ignore) self.text_scroll_obj.bind('<B1-Motion>', lambda event: self.update_line())
self.text_obj.bind('<KeyRelease>', lambda event: self.update_line()) text.bind("<Control-Key-s>", lambda event: self.save_file())
text.bind("<Control-Key-S>", lambda event: self.save_file())
text.bind("<Control-Key-Z>", lambda event: self.toUndo())
text.bind("<Control-Key-Y>", lambda event: self.toRedo()) window.mainloop()
代码没有展示完全,有需要完整代码的可以评论。
Tkinter 之文件管理器的更多相关文章
- 【原】iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)
1.文件管理器(NSFileManager) 1> 主要作用及功能方法 主要作用:此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 功能方法: 2> 创建文件夹 创建所 ...
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...
- Web 在线文件管理器学习笔记与总结(19)上传文件
dir.func.php 中添加方法: /* 上传文件 */ function uploadFile($fileInfo,$path,$allowExt = array('jpg','jpeg','p ...
- Web 在线文件管理器学习笔记与总结(17)复制文件 (18)剪切文件
(17)复制文件 ① 复制文件通过copy($src,$dst) 来实现 ② 检测目标目录是否存在,如果存在则继续检测目标目录中是否存在同名文件,如果不存在则复制成功 file.func.php 中添 ...
- Web 在线文件管理器学习笔记与总结(15)剪切文件夹 (16)删除文件夹
(15)剪切文件夹 ① 通过rename($oldname,$newname) 函数实现剪切文件夹的操作 ② 需要检测目标文件夹是否存在,如果存在还要检测目标目录中是否存在同名文件夹,如果不存在则剪切 ...
- Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹
(13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 i ...
- Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作
(11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...
- Web 在线文件管理器学习笔记与总结(10)查看文件夹中的内容
① 读取文件夹大小 a. 封装计算文件夹大小的函数 b. 打开文件夹 c. 循环判断文件夹下的内容是文件还是文件夹,如果是文件,则累积相加文件的大小:如果是文件夹,则递归调用该函数 注意两个问题: ...
- Web 在线文件管理器学习笔记与总结(9)下载文件
① 普通形式的文件可以使用超链接形式下载 <a href = '下载文件名'>点击下载</a> ② 如果下载图片.html 等类型的文件,使用header() 函数发送网页头信 ...
随机推荐
- 一个多进程爬虫下载图片的demo
import os,re import pickle import requests import random import time from bs4 import BeautifulSoup f ...
- 关于创建Web图像时应记住的五个要素
1. 格式与下载速度 当前,Web上用的最广泛的三种格式是GIF.PNG和JPEG.我们的目标是选择质量最高,同时文件最小的格式. WebP图像格式 谷歌建立了另一种图像格式,名为WebP. 这种格式 ...
- watch from Middle English wacche
watch As a noun, from Middle English wacche, Etymology As a noun, from Middle English wacche,See bel ...
- Unity shader error: “Too many texture interpolators would be used for ForwardBase pass”
Unity shader error: "Too many texture interpolators would be used for ForwardBase pass" 解决 ...
- 如何给SAP云平台购买的账号分配Process Integration服务
在云平台控制台里,给global Account分配Integration Suite下面的Process Integration的API和Runtime两种服务: Process Integrati ...
- vsftp 常见配置测试与故障排除
匿名用户 /var/ftp 本地用户 /home/username配置vsftpd时,强烈建议·# cp /etc/vsftpd.conf /etc/vsftpd.conf1 ...
- Python学习日记(二十九) 网络编程
早期的计算机通信需要有一个中间件,A要给B传东西,A必须要把信息传给中间件,B再把从中间件中拿到信息 由于不同机器之间需要通信就产生了网络 软件开发的架构 1.C/S架构 服务器-客户机,即Clien ...
- Linux--基本目录
特点 系统版本:CentOS 6.5 Linux目录:一切从根开始 Linux下面的设备(磁盘)不挂载的话没有办法使用,使用设备必须有一个入口,挂载点实质就是一个目录. 目录结构及含义 目录 说明 b ...
- 前端jQurey
目录 1.楔子 2.jqeury介绍 2.1为什么要使用jQuery 2.2jQuery 的两大特点 2.3什么是 jQuery 3.jQuery的使用 3.1使用 jQuery 的基本步骤 3.2j ...
- Linux-普通用户切换为root身份
Linux 下普通用户免密码切换 root 用户 具体步骤: 1)编辑 su 文件打开第四行注释 # vim /etc/pam.d/su 2)将用户添加到 wheel 组 # usermod -G w ...