点击西瓜数据按钮新建一个窗口,该窗口默认读取程序设定好的数据文件,并显示在创建好的表格控件中,如果需要导入新的文件可以通过更改文件按钮进行更改,点击显示按钮会将原来表格控件中的数据清除,并插入新数据用以显示。
代码如下:
# 原始数据显示
Label(self.page, text="初始样本数据").grid(row=0, sticky=W)
self.listBox = ttk.Treeview(self.page, height=15, columns=self.header, show='headings') # 创建表格
self.VScroll = ttk.Scrollbar(self.page, orient='vertical', command=self.listBox.yview) # 创建滚动条
self.listBox.configure(yscrollcommand=self.VScroll.set) # 滚动条与表格控件关联
self.VScroll.grid(row=1, column=5, sticky=NS) # 滚动条放置位置
for col in self.header: # 显示表头以及设置列宽
self.listBox.column(col, width=100, anchor='center')
self.listBox.heading(col, text=col)
self.listBox.grid(row=1, column=0, columnspan=4) # 表格放置位置
代码如下:
# 读取当前文件的数据
def readDataSet(self):
content = [] # 存放不包含表头的数据内容
wb = load_workbook(self.data_path)
sheet1 = wb.worksheets[self.sheet_index]
# 迭代读取所有的行
cnt = 0
for row in sheet1.rows:
row_val = [col.value for col in row]
if cnt == 0:
pass
else:
content.append(row_val)
cnt = cnt + 1
print(content)
return content
代码如下:
# 显示当前文件的轨道电路数据集
def show(self):
self.listBox.delete(*self.listBox.get_children()) # 清空原先表格
tempList = self.readDataSet() # 导入当前文件数据
for i, row in enumerate(tempList, start=1):
self.listBox.insert("", "end", values=(i, row[1], row[2], row[3]))
from view import *
from Watermelon import *
class MainPage(object):
def __init__(self, master):
self.root = master # 定义内部变量root
self.root.geometry('%dx%d' % (600, 400)) # 设置窗口大小
self.createPage()
def createPage(self):
# 创建不同的界面frame
self.selectPage = selectPage(self.root) # 子系统选择界面
self.window1Page = window1_Frame(self.root) # 窗口1界面
self.window2Page = window2_Frame(self.root) # 窗口2界面
self.aboutPage = AboutFrame(self.root) # 关于信息界面
# 窗口选择界面的按钮布局
Button(self.selectPage, text='窗口1', font=('Microsoft YaHei', 12), command=self.window1_Disp).grid(stick=E + W)
Label(self.selectPage).grid(stick=E + W) # 空一行
Label(self.selectPage).grid(stick=E + W) # 空一行
Button(self.selectPage, text='窗口2', font=('Microsoft YaHei', 12), command=self.window2_Disp).grid(stick=E + W)
# 窗口1界面的按钮布局
Button(self.window1Page, text='西瓜数据', font=('Microsoft YaHei', 12), command=self.Watermelon_Disp).grid(
stick=E + W, padx=10)
Label(self.window1Page).grid(stick=E + W) # 空一行
Label(self.window1Page).grid(stick=E + W) # 空一行
Button(self.window1Page, text='返回', font=('Microsoft YaHei', 12), command=self.selcetmodel).grid(stick=E + W,
padx=10)
# 窗口2系统界面的按钮布局
Button(self.window2Page, text='其他界面', font=('Microsoft YaHei', 12)).grid(stick=E + W, padx=10)
Label(self.window2Page).grid(stick=E + W) # 空一行
Label(self.window2Page).grid(stick=E + W) # 空一行
Button(self.window2Page, text='返回', font=('Microsoft YaHei', 12), command=self.selcetmodel).grid(stick=E + W,
padx=10)
self.selectPage.pack() # 默认显示诊断子系统选择界面
menubar = Menu(self.root)
menubar.add_command(label='窗口选择', command=self.selcetmodel)
menubar.add_command(label='窗口1', command=self.window1_Disp)
menubar.add_command(label='窗口2', command=self.window2_Disp)
menubar.add_command(label='关于', command=self.about_Disp)
self.root['menu'] = menubar # 设置菜单栏
def selcetmodel(self):
self.selectPage.pack()
self.window1Page.pack_forget()
self.window2Page.pack_forget()
self.aboutPage.pack_forget()
def window1_Disp(self):
self.selectPage.pack_forget()
self.window1Page.pack()
self.window2Page.pack_forget()
self.aboutPage.pack_forget()
def window2_Disp(self):
self.selectPage.pack_forget()
self.window1Page.pack_forget()
self.window2Page.pack()
self.aboutPage.pack_forget()
def about_Disp(self):
self.selectPage.pack_forget()
self.window1Page.pack_forget()
self.window2Page.pack_forget()
self.aboutPage.pack()
def Watermelon_Disp(self): # FDT界面显示
self.subroot = Tk() # 定义子窗口root
Watermelon_Page(self.subroot)
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from openpyxl import load_workbook
class Watermelon_Page(object):
def __init__(self, master=None):
self.root = master # 定义内部变量root
self.root.title('西瓜')
self.root.geometry('%dx%d' % (600, 400)) # 设置窗口大小
self.data_path = '西瓜.xlsx' # 初始西瓜数据集路径
self.sheet_index = 0 # 默认获取第1张sheet
self.header = ('序号', '密度', '含糖率', '是否是好瓜') # 显示数据的表头
self.createPage()
def createPage(self):
self.page = Frame(self.root) # 创建Frame
self.page.pack()
# 原始数据显示
Label(self.page, text="初始样本数据").grid(row=0, sticky=W)
self.listBox = ttk.Treeview(self.page, height=15, columns=self.header, show='headings') # 创建表格
self.VScroll = ttk.Scrollbar(self.page, orient='vertical', command=self.listBox.yview) # 创建滚动条
self.listBox.configure(yscrollcommand=self.VScroll.set) # 滚动条与表格控件关联
self.VScroll.grid(row=1, column=5, sticky=NS) # 滚动条放置位置
for col in self.header: # 显示表头以及设置列宽
self.listBox.column(col, width=100, anchor='center')
self.listBox.heading(col, text=col)
self.listBox.grid(row=1, column=0, columnspan=4)
# tempList = self.readDataSet() # 表格显示初始数据
# for i, row in enumerate(tempList, start=1):
# self.listBox.insert("", "end", values=(i, row[1], row[2], row[3]))
self.show() # 表格显示初始数据
Button(self.page, text='更改文件', width=10, command=self.open_file).grid(row=16, column=0) # 重新导入数据按钮
Button(self.page, text="显示", width=10, command=self.show).grid(row=16, column=1) # 显示当前文件数据的按钮
Button(self.page, text="关闭", width=10, command=self.page.destroy).grid(row=16, column=2) # 显示当前文件数据的按钮
# 读取excel文件函数
def open_file(self):
filepath = filedialog.askopenfilename(title='打开Excel文件', filetypes=[('Excel Files', '*.xlsx')])
if filepath != '':
self.data_path = filepath
print(self.data_path)
# 读取当前文件的数据
def readDataSet(self):
content = [] # 存放不包含表头的数据内容
wb = load_workbook(self.data_path)
sheet1 = wb.worksheets[self.sheet_index]
# 迭代读取所有的行
cnt = 0
for row in sheet1.rows:
row_val = [col.value for col in row]
if cnt == 0:
pass
else:
content.append(row_val)
cnt = cnt + 1
print(content)
return content
# 显示当前文件的轨道电路数据集
def show(self):
self.listBox.delete(*self.listBox.get_children()) # 清空原先表格
tempList = self.readDataSet() # 导入当前文件数据
for i, row in enumerate(tempList, start=1):
self.listBox.insert("", "end", values=(i, row[1], row[2], row[3]))
demo工程文件已经上传至CSDN下载资源和GitHub上,CSDN下载链接、GitHub链接。