核心代码,调度各个类之间的使用
import tkinter
from tkinter import ttk
import 图形化编程.BigDataFind
class InputView:
def __init__(self):
self.win=tkinter.Tk()
self.win.geometry("800x600+300+0") # 800宽度,800高度,x,y坐标,左上角
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=200, y=0)
self.comvalue = tkinter.StrivngVar() # 窗体自带的文本,新建一个值?
self.comboxlist = ttk.Combobox(self.win, textvariable=self.comvalue,width=80) # 初始化
self.comboxlist["values"] = ("listshow", "textshow", "tableshow")
self.comboxlist.current(0) # 选择第一个
self.comboxlist.bind("<<ComboboxSelected>>", self.go) # 绑定事件
self.comboxlist.place(x=0,y=50)
self.howtoshow="listshow"
self.comvaluefile = tkinter.StringVar() # 窗体自带的文本,新建一个值
self.comboxlistfile = ttk.Combobox(self.win, textvariable=self.comvaluefile,width=80) # 初始化
self.comboxlistfile["values"] = (r"D:\数据处理\csdn.txt",
r"D:\数据处理\kaifangX.txt",
r"D:\数据处理\nasa.txt")
self.comboxlistfile.current(0) # 选择第一个
self.comboxlistfile.bind("<<ComboboxSelected>>", self.filego) # 绑定事件
self.comboxlistfile.place(x=0, y=100)
self.howtoshowfile = r"D:\数据处理\csdn.txt"
pass
def go(self,*args):
self.howtoshow =self.comboxlist.get() #保存选中的值
print(self.comboxlist.get()) # 选中当前的值
def filego(self, *args):
self.howtoshowfile= self.comboxlistfile.get() # 保存选中的值
print(self.comboxlistfile.get()) # 选中当前的值
def show(self):
self.win.mainloop()
pass
def search(self):
print("start search",self.entry.get())
big = 图形化编程.BigDataFind.bigdatafind(self.howtoshowfile, self.howtoshow)
big.find(self.entry.get())
big.show()
inputs=InputView()
inputs.show()
搜索数据代码:
import codecs #编码解码
import 图形化编程.ListShow
import 图形化编程.TableShow
import 图形化编程.TextShow
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=图形化编程.ListShow.Listshowdata()
elif self.howtoshow=="textshow":
self.showview = 图形化编程.TextShow.Textshowdata()
else:
self.showview=图形化编程.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.addata(line) # 显示
if not line: #读不到数据退出
break
def show(self):
if self.showview!=None:
self.showview.show() #显示
def __del__(self):
self.file.close()
列表显示
import tkinter
class Listshowdata:
def __init__(self):
self.win=tkinter.Tk() #构造窗体
self.win.geometry("900x800+0+0")
self.mylist=tkinter.Listbox(self.win,width=900,height=800) #列表框
self.mylist.pack()
def addata(self,insertstr): #增加数据
self.mylist.insert(tkinter.END,insertstr)
def show(self):
self.win.mainloop() # 进入消息循环
表格显示
import tkinter
from tkinter import ttk #导入内部包
class Tableshowdata:
def __init__(self):
self.win=tkinter.Tk() #构造窗体
self.win.geometry("900x800+0+0")
self.tree = ttk.Treeview(self.win,height=800) # 表格
self.idnum=0 #插入的位置
self.tree["columns"] = ("user", "password", "email")
self.tree.column("user", width=200) # 表示列,不显示
self.tree.column("password", width=200)
self.tree.column("email", width=200)
self.tree.heading("user", text="CSDN-name") # 显示表头
self.tree.heading("password", text="CSDN-age")
self.tree.heading("email", text="CSDN-tall")
def addata(self,insertstr): #增加数据
datalist=insertstr.split(" # ")
if len(datalist)==3:
self.tree.insert("", self.idnum, text="line"+str(self.idnum+1), values=(datalist[0], datalist[1], datalist[2])) # 插入的行数,
self.idnum+=1
def show(self):
self.tree.pack()
self.win.mainloop() # 进入消息循环
文本显示
import tkinter
class Textshowdata:
def __init__(self):
self.win=tkinter.Tk() #构造窗体
self.win.geometry("900x800+0+0")
self.text = tkinter.Text(self.win,width=900,height=800) # 文本编辑器
self.text.pack()
def addata(self,insertstr): #增加数据
self.text.insert(tkinter.INSERT, insertstr)
def show(self):
self.win.mainloop() # 进入消息循环