TK可视化之文件内容查找(升级篇)
升级为带有选择框
分三种查看格式一种是表格查看 一种是文本查看 一种是列表
1.列表查看类
# listbox 显示数据
import tkinter
class ListShowData:
def __init__(self):
self.win=tkinter.Tk() # 构造窗体
self.mylist=tkinter.Listbox(self.win,width=100) #列表框
self.mylist.pack() def adddata(self,insertstr):
self.mylist.insert(tkinter.END,insertstr) def show(self):
self.win.mainloop() # 进入消息循环 if __name__ == '__main__':
listshow = ListShowData()
listshow.adddata(123)
listshow.adddata(123)
listshow.adddata(123)
listshow.show()
2.文本查看类
# text文件模式显示数据
import tkinter class TextShowData:
def __init__(self):
self.win = tkinter.Tk() # 构造窗体
self.text = tkinter.Text(self.win, width=100) # 列表框
self.text.pack() def adddata(self, insertstr):
self.text.insert(tkinter.INSERT, insertstr) def show(self):
self.win.mainloop() # 进入消息循环 if __name__ == '__main__':
listshow =TextShowData()
listshow.adddata("123\r\n")
listshow.adddata("123\r\n")
listshow.adddata("123\r\n")
listshow.adddata("123\r\n") listshow.show()
3.表格查看
# tree表格显示数据
import tkinter
from tkinter import ttk class TableShowData():
def __init__(self):
self.win=tkinter.Tk()
self.win.geometry("1000x1000+100+100") self.idnum = 0 # 表示插入的行数 self.tree=ttk.Treeview(self.win,height=500) # 表格 self.tree["column"]=("用户","密码","邮箱")
self.tree.column("用户",width=200) # 表示列,不显示
self.tree.column("密码",width=200)
self.tree.column("邮箱",width=200) self.tree.heading("用户",text="用户")
self.tree.heading("密码",text="密码")
self.tree.heading("邮箱",text="邮箱") self.tree.pack() def adddata(self,insertstr): # 增加数据
datalist=insertstr.split(" # ")
if len(datalist) == 3:
self.tree.insert("",self.idnum,text=(self.idnum+1),values=(datalist[0],
datalist[1],
datalist[2]))
self.idnum+=1
def show(self):
self.win.mainloop() if __name__ == '__main__':
mytable=TableShowData()
mytable.adddata("19810831 # 273018 # wangweirun@sina.com")
mytable.adddata("19811103 # 74215 # luckyydd@263.net")
mytable.adddata("198212160123 # 433318 # xpj-1216@163 com")
mytable.show()
4.数据查询类
import codecs
import python基础.day16.图形化编程.listshow
import python基础.day16.图形化编程.textshow
import python基础.day16.图形化编程.tableshow
class BigDataFind():
def __init__(self,path,howtoshow):
self.file = codecs.open(path,"rb","gbk","ignore") # 打开文件
self.howtoshow=howtoshow
self.showview=None # 窗体-创建 if self.howtoshow=="listshow":
self.showview=python基础.day16.图形化编程.listshow.ListShowData() elif self.howtoshow=="textshow":
self.showview = python基础.day16.图形化编程.textshow.TextShowData() elif self.howtoshow=="tableshow":
self.showview = python基础.day16.图形化编程.tableshow.TableShowData() def find(self,searchstr):
while True:
line = self.file.readline()
if line.find(searchstr) != -1:
print(line,end="") # 显示数据
# 插入
if self.showview != None:
# 显示
self.showview.adddata(line)
if not line: # 找不到数据
break def show(self):
if self.showview != None: # 显示
self.showview.show() # 显示查找到的内容 def __del__(self):
self.file.close() if __name__ == '__main__':
bigfind = BigDataFind(路径,使用那个方法显示)
bigfind.find(查找内容)
bigfind.show()
5.输入窗口
import tkinter
from tkinter import ttk
from python基础.day16.图形化编程.bigdatafind import BigDataFind
class InputViem():
def __init__(self):
self.win =tkinter.Tk()
self.win.geometry("900x300+0+0") # 输入框
self.entry=tkinter.Entry(self.win) #input
self.entry.place(x=0,y=0) # 按钮
self.button=tkinter.Button(self.win,text="搜索",command=self.search)
self.button.place(x=150,y=0) # 类型组合框1
self.comvalue=tkinter.StringVar() #窗体的自带文本 新建一个值
self.comboxlist=ttk.Combobox(self.win,
textvariable=self.comvalue)
self.comboxlist["values"]=("listshow","tableshow","textshow")
self.comboxlist.current(0) #默认显示第一个
self.comboxlist.bind("<<ComboboxSelected>>", self.go) # 绑定组合框事件
self.comboxlist.place(x=0,y=100) # 文件组合框2
self.comvalueFile = tkinter.StringVar() # 窗体的自带文本 新建一个值
self.comboxlistFile = ttk.Combobox(self.win,
textvariable=self.comvalueFile,
width=90)
self.comboxlistFile["values"] = (r"G:\我的python\python基础\大数据相关数据\csdn.txt",
r"G:\我的python\python基础\大数据相关数据\QQ.txt",
r"G:\我的python\python基础\大数据相关数据\kaifang.txt" )
self.comboxlistFile.current(0)
self.comboxlistFile.bind("<<ComboboxSelected>>", self.goFile) # 绑定组合框事件
self.comboxlistFile.place(x=0, y=200) def go(self,*tuple):
print(self.comboxlist.get()) def goFile(self,*tuple):
print(self.comboxlistFile.get()) def show(self):
self.win.mainloop() def search(self):
print(self.entry.get())
print(self.comboxlist.get())
bigfind = BigDataFind(self.comboxlistFile.get(), self.comboxlist.get())
bigfind.find(self.entry.get())
bigfind.show() if __name__ == '__main__':
win=InputViem()
win.show()
TK可视化之文件内容查找(升级篇)的更多相关文章
- TK可视化之文件内容查找
1.内容输出类 import tkinter import python基础.day15.搜索数据可视化.BigDataFind class InputViem(): def __init__(sel ...
- ubuntu下文件内容查找命令
Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名 例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件 ...
- [Linux] find文件查找和grep文件内容查找
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区别的: (1)find命令:根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时 ...
- [转帖]linux下的find文件查找命令与grep文件内容查找命令
linux下的find文件查找命令与grep文件内容查找命令 https://www.cnblogs.com/shileima/p/8431393.html 在使用linux时,经常需要进行文件查找. ...
- linux下的find文件查找命令与grep文件内容查找命令
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...
- linux下文件内容查找 转
find | xargs grep test find命令和xargs命令 网友:wuye_chinaunix 发布于: : (共有条评论) 查看评论 | 我要评论 青云 分配文件 - -| 回首页 ...
- linux几种常见的文件内容查找和替换命令
作为一个以前没怎么接触过linux的小白,开始使用linux,各种不习惯,这周遇到一个文件内容测查找和替换的需求.学习了以下几种实现方式: 1.vi命令下的查找和替换 1.1 vi下的查找 /patt ...
- 嵌入式开发之命令行---linux下的find文件查找命令与grep文件内容查找命令
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...
- linux命令按文件内容查找文件
[root@hn web]# find /app/code/hzg/web/ -type f -name "*.php" | xargs grep "slog"
随机推荐
- 细说RESTFul API之版本管理
目录 接口实现版本管理的意义 如何实现接口的版本管理 项目实战 接口实现版本管理的意义 API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义. 首先,对于API ...
- 【iOS】file not found: .../Build/Products/Debug-iphonesimulator file not found
今天又遇到了这个问题: ld: file not found: /Users/***/Library/Developer/Xcode/DerivedData/***-dfscappaygvbougtb ...
- Linux 清理空间
背景: 在使用Linux服务器的时候,经常会碰到服务器上的磁盘空间满了,在该种情况下,必须进行磁盘空间清理. 解决方法: 示例:需要/tmp下空出至少1G的可用空间 分别执行的命令如下: df /tm ...
- 夯实Java基础(十二)——异常处理
1.异常处理概述 在Java程序执行过程中, 总是会发生不被期望的事件, 阻止程序按照程序员预期正常运行, 这就是Java程序出现的异常. 异常处理是基于面向对象的一种运行错误处理机制,通过对异常问题 ...
- Button 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- RocketMQ中Broker的刷盘源码分析
上一篇博客的最后简单提了下CommitLog的刷盘 [RocketMQ中Broker的消息存储源码分析] (这篇博客和上一篇有很大的联系) Broker的CommitLog刷盘会启动一个线程,不停地 ...
- 洛谷P2125 题解
吐槽: 只能说这道题很数学,本数学蒟蒻推了半天没推出来,只知道要用绝对值,幸亏教练提醒,才勉强想出正解(似乎不是这样的),真的是很无语. 以上皆为吐槽本题,可直接 跳过 分析: 既然题目是要使书架上的 ...
- Apache 80端口可以访问,8080却不可访问
RT, 记录一下,后面看是否有解决方案.
- 邻域保持嵌入(NPE)
传统的线性降维方法,如主成分分析(PCA).因子分析(FA)等,关注的是样本的方差,能学习线性流形的结构,却无法学习非线性流形.而经典的流形学习方法虽然能够学习非线性流形结构,但由于本身属于直推学习, ...
- 扩展欧几里德算法(递归及非递归实现c++版)
今天终于弄懂了扩展欧几里德算法,有了自己的理解,觉得很神奇,就想着写一篇博客. 在介绍扩展欧几里德算法之前,我们先来回顾一下欧几里德算法. 欧几里德算法(辗转相除法): 辗转相除法求最大公约数,高中就 ...