python tkinter库的Text记录点击路经和删除记录详情
作者:MAR-Sky 发布时间:2021-04-15 03:41:13
标签:python,tkinter,库,Text,路经,删除
前言
需要注意,对实例化的文本组件的insert、delete等操作的index**都是浮点型而不是整型**,(1.0,2.0)表示的是对第一行操作,关闭窗口需要知道作用的对象是最根本的窗口,不是某个Frame。
Text的几个主要设置参数:
第一个参数:窗体或框架变量
state:控制是否可以修改text的文字内容,normal,disable
width,height:宽和高
text组件的一个主要操作:
txt_entry=Text(wintool,state,width,height).pack()
txt_entry.get(start_index,end_index)#读取text中的字符内容,start_index,end_index都是浮点数,整数部分表示一行
txt_entry.delete(start_index,end_index) # 删除文本
txt_entry.insert(start_index,'文本内容')# 对text插入文本内容,若是结尾索引可以使用END
import tkinter.filedialog as fd:用于读取文件或路径的库
fd.askdirectory:返回点击的路径
fd.askopenfilenames():返回多个选中文件的名字
txt_entry=Text(wintool,width,height,).pack():组件实例化和放置
txt_entry(组件实例化后的变量)
对点击打开的文件路径进行记录显示
from tkinter import *
import tkinter.filedialog as fd
all_path = [] # 记录全局路径
def openFloder():
folder_path = fd.askdirectory(initialdir=r"D:\graduate\小程序\车牌的总数量及省份统计") # 打开文件
show_folderPath.delete(0.0,END) # 清空
show_folderPath.insert(0.0,folder_path) #写入路径
print(folder_path)
all_path.append(folder_path)
txt.delete(0.0,'end')
txt.insert(0.0,all_path) #插入的第一个字符是索引马,不能是整数形式
print('all_path:',all_path)
root = Tk() # 生成主窗口对象
root.title('Demo') # 窗口标题
root.geometry('400x400') # 窗口大小
fr= Frame(root,width=200,height=200,)
fr.pack(side='top',expand='yes')
txt = Text(fr,bd=5)
txt.pack(side='bottom')
txt_txt = txt.get(0.0)
print('txt_txt:',txt_txt)
fr1= Frame(fr,width=100,height=30,bg='gray')
fr1.pack(side='left',expand='yes')
fr2= Frame(fr,width=100,height=30,bg='white')
fr2.pack(side='left',expand='yes')
show_folderPath = Entry(fr2)
show_folderPath .pack(side='left')
btn = Button(fr1,bg='orange',text ="选择文件",command = openFloder) # 在root窗口对象上设置一个按钮,用于打开文件和返回选择的文件名
btn.pack()
root.mainloop()
记录点击的文件路径和文件夹路径
更多相关文件路径可以参考
# from tkinter import *
import tkinter as tk
import tkinter.filedialog as fd
from tkinter import filedialog
def select_file():
# 单个文件选择
selected_file_path = filedialog.askopenfilename() # 使用askopenfilename函数选择单个文件
select_path.set(selected_file_path)
def select_files():
# 多个文件选择
selected_files_path = filedialog.askopenfilenames() # askopenfilenames函数选择多个文件
select_path.set('\n'.join(selected_files_path)) # 多个文件的路径用换行符隔开,更新tkinter的字符变量
def select_folder():
# 文件夹选择
selected_folder = filedialog.askdirectory() # 使用askdirectory函数选择文件夹
select_path.set(selected_folder)
root = tk.Tk()
root.title("选择文件或文件夹,得到路径")
# 初始化Entry控件的textvariable属性值,能够实时读取控件的变化
select_path = tk.StringVar()
# 布局控件
tk.Label(root, text="文件路径:").grid(column=0, row=0, rowspan=3)
tk.Entry(root, textvariable = select_path).grid(column=1, row=0, rowspan=7)
tk.Button(root, text="选择单个文件", command=select_file).grid(row=0, column=2)
tk.Button(root, text="选择多个文件", command=select_files).grid(row=1, column=2)
tk.Button(root, text="选择文件夹", command=select_folder).grid(row=2, column=2)
root.mainloop()
记录文件路径,在text中显示,删除和关闭窗口
from tkinter import *
import tkinter as tk
import tkinter.filedialog as fd
all_paths=[]
def real_close(): #定义关闭窗口命令,在button中使用,若使用定义的函数,必须把定义放在使用语句的前边
root.quit()
def choose_folder(): # 每次选择一个文件路径
folder_dirs["state"] = 'normal' # 将文本框组件修改为可修改
# folder_dirs.delete(0.0,END) # 清空,第一个参数必须是浮点型的不能是整型
select_folder = fd.askdirectory() # 每次点击文件
select_paths.set(select_folder) #为了显示
all_paths.append(select_folder) # 为了记录点击过的所有文件路径
print(all_paths)
# text组件对记录的路径显示,且连续从后边插入,为了显示
folder_dirs.insert('end',select_paths.get()+'\n')
folder_dirs["state"] = 'disable' # 将文本框修改为不可修改
def delete_folder(): # 每次选择一个文件路径
folder_dirs["state"] = 'normal' # 将文本框组件修改为可修改
folder_txt = folder_dirs.get(1.0,'end').split('\n')
txt_len = len(folder_txt)
txt_start = '%s.0'%(txt_len-2) # text组件中的索引表示的含义:1.1表示第一行第一个字符,
txt_end = '%s.0'%(txt_len-1)
# folder_dirs.delete(1.0,2.0)表示删除第一行内容
folder_dirs.delete(txt_start,txt_end)
all_paths.pop()
print(all_paths)
folder_dirs["state"] = 'disable' # 将文本框修改为不可修改
root=Tk()
root.title('文件夹的选择和路径显示')
root.geometry('800x400') # 窗体大小
# 记录点取的路径,使用内容时需要使用get()方法,每次记录一个路径
select_paths = tk.StringVar()
Label(root,text="folders:",font=("Arial", 16),bg='yellow').pack(side='left',padx=5,pady=5)
folder_dirs=Text(root,state='disable',bd=5,width=50,height=25,) # 定义路径文本框
folder_dirs.pack(side='left',padx=5,pady=5) # 放置文本组件
Button(root, text = "choose folder", command=choose_folder,font=("Arial", 12),bg='green').pack(side='left',padx=5,pady=5)
Button(root, text = "delete folder", command=delete_folder,font=("Arial", 12),bg='red').pack(side='left',padx=5,pady=5)
but=Button(root, text = "EXIT", command=real_close,font=("Arial", 12),bg='red')
but.pack(side='bottom',expand=0)
root.mainloop()
来源:https://blog.csdn.net/weixin_43794311/article/details/124682879


猜你喜欢
- 前言 一直用ASP+ACCESS来编写网页和公司的内部应用系统,内部应用系统也就是大家说的OA吧,这个我也不知道,公司又叫它ERP,反正不管
- 自己搭建IP数据库占资源,而且更新不便,何不使用现成的IP查询呢?下面自己写了个获取IP物理地址的PHP代码(有一定的瑕疵,请高手不吝赐教)
- Python爬虫、数据分析、网站开发等案例教程视频免费在线观看https://space.bilibili.com/523606542Sel
- 业务需求 识别验证码图片中的数字信息,用pyt
- 今天也碰到了el表达式无法解析的事情,于是在网上查询了下,大多说是因为web.xml中声明的版本问题于是收集了如下版本:web-app_2_
- 这篇文章主要介绍了python使用enumerate获取迭代元素下标,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 背景简介别踩白板这个游戏相信大家都玩过,这个是基于HTML5打造的简单小游戏,在PC端和移动端都能够运行,适应多种平台,今天我们使用原生JS
- 这篇文章主要介绍了Python 切分数组实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
- 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所
- 和数据库打交道要频繁地用到SQL语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差、效率低、功能弱等等缺点。因此,大多数
- 数组统计函数ndimage提供一系列函数,可以计算标注后的数组的相关特征,比如最值、均值、均方根等。下列函数,如果未作其他说明,那么就有3个
- 前言:在motplotlib的学习过程中,我们使用最多的就是numpy模块。numpy 模块被称为 matplotlib 模块绘制图表伴侣。
- MVC代表: 模型-视图-控制器 。MVC是一个架构良好并且易于测试和易于维护的开发模式。基于MVC模式的应用程序包含:· Models:
- dom0级事件<a href="#" id="hash" onclick="fn()
- 本文介绍Golang pipe,以及在不同场景下的应用。Pipe介绍pipe实现从一个进程重定向至另一个进程,它是双向数据通道,用于实现进行
- 从最简单的Web浏览器的登录界面开始,登录界面如下:进行Web页面自动化测试,对页面上的元素进行定位和操作是核心。而操作又是以定位为前提的,
- Python 3 利用 Dlib 19.7 实现摄像头人脸检测特征点标定0.引言利用python开发,借助Dlib库捕获摄像头中的人脸,进行
- WordPress 3.0 引入导航菜单功能, 让页面的导航和链接的管理变得简单易用. WP 向用户提供了菜单管理页面和多种调用方法, 我们
- 先创建表,然后生成批量数据。在models文件里from django.db import models# Create your mode
- String转换为time存进数据库很久没试过将String类型转换并存进数据库中的date类型的字段,今天刚好遇到并解决了这个小问题,故写