Python使用Treeview制作表格(二)
界面:
import tkinter as tk
import time
import sysimport ttkbootstrap
from tkinter import Frame, ttk, scrolledtext, Button, VERTICAL, NS, NSEW, END, Labelclass RunMain(object):def __init__(self):passdef interface_main(self):self.window = ttkbootstrap.Window(themename="litera")# 设置标题self.window.title('实验界面')# 窗口的位置和大小sw = self.window.winfo_screenwidth()# 得到屏幕宽度sh = self.window.winfo_screenheight()# 得到屏幕高度ww = 800wh = 600# 窗口宽高为500x = (sw-ww) / 2y = (sh-wh) / 2self.window.geometry("%dx%d+%d+%d" % (ww, wh, x, y))# 设置窗口是否可以变化长宽,默认可变self.window.resizable(width=False, height=False)self.window.iconbitmap("logo.ico")"""基本布局"""lable1_line = Label(self.window, text='-' * 66, font=('微软雅黑', 20), fg='black', bg='#C0D9D9')lable1_line.place(x=0, y=40)lable1_title = Label(self.window, text='实验界面', font=('微软雅黑', 30), fg='black', bg='#C0D9D9')lable1_title.place(x=320, y=0)lable1_edition = Label(self.window, text='版本号v1.0', font=('微软雅黑', 10), fg='black', bg='#C0D9D9')lable1_edition.place(x=720, y=30)# 设置窗口是否可以变化长宽,默认可变self.window.resizable(width=False, height=False)frame = Frame(self.window)# 创建表格self.tree_date = ttk.Treeview(frame, show='tree headings', height=17)frame.place(x=10, y=100, width=580)# 设置x轴和y轴的滚动条ybar = ttk.Scrollbar(frame, orient=VERTICAL)ybar.pack(side='right', fill='y')xbar = ttk.Scrollbar(frame, orient=tk.HORIZONTAL)xbar.pack(side='bottom', fill='x')self.tree_date.configure(yscrollcommand=ybar.set, xscrollcommand=xbar.set)# 定义列self.tree_date["columns"] = ["name", "age", "weight", "number", "hang", "X"]self.tree_date.pack()# 使用command参数来绑定treevievwybar.config(command=self.tree_date.yview)xbar.config(command=self.tree_date.xview)# 设置列宽度self.tree_date.column("#0", width=90, anchor="center")self.tree_date.column("name", width=70, anchor="center")self.tree_date.column("age", width=70, anchor="center")self.tree_date.column("weight", width=70, anchor="center")self.tree_date.column("number", width=70, anchor="center")self.tree_date.column("hang", width=70, anchor="center")self.tree_date.column("X", width=160, anchor="center")# 添加列名self.tree_date.heading("#0", text="循环名")self.tree_date.heading("name", text="姓名")self.tree_date.heading("age", text="年龄")self.tree_date.heading("weight", text="体重")self.tree_date.heading("number", text="状态")self.tree_date.heading("hang", text="行")self.tree_date.heading("X", text="完成时间")# # 添加列名# self.tree_date.heading("#0", text="制式")# for j in date_columns:# self.tree_date.heading(j, text=j)"""进度条"""self.jin_du = ttkbootstrap.Meter(master=self.window,bootstyle="success",subtextstyle="warning",metertype="full", # 将仪表显示为一个完整的圆形或半圆形(semi)# wedgesize=5, #设置弧周围的指示器楔形长度,如果大于 0,则此楔形设置为以当前仪表值为中心的指示器amounttotal=100, # 仪表的最大值,默认100amountused=100, # 仪表的当前值metersize=180, # 仪表大小showtext=True, # 指示是否在仪表上显示左、中、右文本标签interactive=False, # 是否可以手动调节数字的大小textleft='进度:', # 插入到中心文本左侧的短字符串textright='%',textfont="-size 20", # 中间数字大小# subtext=" ",subtextfont="-size 20", # 文本大小)self.jin_du.place(x=600, y=250)"""下方说明框"""self.scr_explain = scrolledtext.ScrolledText(self.window, font=('微软雅黑', 15), width=63, height=5)self.scr_explain.place(x=10, y=440)self.run_button = Button(self.window, text="开始运行", font=('微软雅黑', 20))self.run_button.place(x=620, y=100)self.exit_button = Button(self.window, text="退出界面", font=('微软雅黑', 20))self.exit_button.place(x=620, y=180)
处理函数:
import time
import sys
import threadingfrom tkinter import END, messageboxfrom configure import RunMaintest_item_num = 0class MyThread(threading.Thread):def __init__(self, func, *args):super().__init__()self.func = funcself.args = argsself.setDaemon(True)self.start() # 在这⾥开始def run(self):self.func(*self.args)class DataHandle(RunMain):def __init__(self):super().__init__()# 计算所有的测试项的总数def test_number(self):all_number = 18return all_number# 进度条参数显示def step_number(self):global test_item_numall_number = self.test_number()# print(all_number)number = (1 / all_number) * 100test_item_num = test_item_num + numberself.jin_du.configure(amountused=int(test_item_num))# 输出到下方提示框def out_put(self, output: str):self.scr_explain.insert(END, "{}\n".format(output))self.scr_explain.yview_moveto(1)def tool_exit(self):confirmation_information = messagebox.askquestion('确认操作', '确定退出工具?')if confirmation_information == "no":self.out_put("退出操作已取消!")returnsys.exit()# 清空表格def delButton(self, tree):x = tree.get_children()for item in x:tree.delete(item)def run_main(self):# 清空表格和下方提示框self.scr_explain.delete(0.0, END)self.delButton(self.tree_date)# 进度条清空global test_item_numtest_item_num = 0self.jin_du.configure(amountused=0)# 进度条显示变蓝self.jin_du.configure(bootstyle="info")self.scr_explain.delete(0.0, END)self.delButton(self.tree_date)# 建立起制式表头sf1 = self.tree_date.insert('', END, text='第一个循环', open=True)complete_time = time.strftime("%Y.%m.%d %H:%M:%S", time.localtime())for num in range(1, 10):# 显示进度条self.step_number()time.sleep(0.1)self.out_put("表格加载第{}次!".format(num))data = ["张三", "18", "70kg", "ok", num, complete_time]# 直接在已有数据后填充idd = self.tree_date.insert(sf1, END, values=tuple(data))self.tree_date.see(idd)self.tree_date.update()num += 1# 建立起制式表头sf2 = self.tree_date.insert('', END, text='第二个循环', open=True)for num in range(1, 10):# 显示进度条self.step_number()time.sleep(0.1)self.out_put("表格加载第{}次!".format(num))data = ["李四", "18", "70kg", "ok", num, complete_time]# 直接在已有数据后填充idd = self.tree_date.insert(sf2, END, values=tuple(data))self.tree_date.see(idd)self.tree_date.update()num += 1# 进度条test_item_num = 0self.jin_du.configure(bootstyle="success", amountused=100)self.out_put("程序运行完成!")def set_command(self):self.exit_button.configure(command=self.tool_exit)self.run_button.configure(command=lambda: MyThread(self.run_main))# 用x键,防止文件未创建self.window.protocol("WM_DELETE_WINDOW", self.tool_exit)def main(self):self.interface_main()self.set_command()self.window.mainloop()if __name__ == '__main__':data_handle = DataHandle()data_handle.main()
最后效果图·:
点击按键《开始运行》就可以看到运行的效果了。
Python使用Treeview制作表格(二)相关推荐
- Python使用Treeview制作表格
本文需要以下的库文件,读者可以按照下方的方法进行安装: """ 需安装的库文件: pip install ttkbootstrap换源网址: - 豆瓣:http://py ...
- python tkinter treeview制作,Python tkinter之Treeview(表格)
1.Treeview的基本属性 # -*- encoding=utf-8 -*- import tkinter from tkinter import * from tkinter import tt ...
- Python+tkinter+Treeview模拟表格并设置字体和颜色
清华大学出版社-第10届高等学校计算机程序设计课程论坛 中国大学MOOC"Python程序设计基础"免费学习地址 2020年秋季学期Python教材推荐与选用参考 推荐图书: &l ...
- python tkinter treeview制作_python-3.x – Tkinter Treeview标题样式
我想更改树视图标题的背景颜色.我已经确定了Treeview.Heading布局的元素选项,负责这个:Treeheading.cell.问题是这个设置不适用于'vista'主题(由于我假设的绘图问题). ...
- python一行代码制作简易二维码
运行环境 : python 3.6.0 此项目来源于 GitHub ...... GitHub 项目源 : https://github.com/sylnsfar/qrcode 安装方式 : pip ...
- python在vsc制作动态二维码_用VScode愉快的写python代码
前言 VScode是一个相当优秀的IDE,具备开源.跨平台.模块化.插件丰富.启动时间快.颜值高.可高度定制等等优秀的特质,不愧是微软爸爸的私生子. 所以用VScode来编写Python,也是相当的好 ...
- 用python如何制作表格步骤_Python中用xlwt制作表格实例讲解
在Python中,我们也可以用xlwt来制作excel表格,是不是很神奇,接下来一起学习吧. 举例: ```python import xlwt wb = xlwt.Workbook(encoding ...
- 用python如何制作表格_Python中如何用xlwt制作表格
在Python中,我们也可以用xlwt来制作excel表格,是不是很神奇,接下来一起学习吧. 举例: import xlwt wb = xlwt.Workbook(encoding = 'ascii' ...
- 如何用python制作动态二维码,提升表白成功率?
来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...
最新文章
- WinForm 曲线图控件
- matlab模块 python,Matlab 和Python结合使用
- 在国外读phd 的时候和supervisor沟通的时候需要注意的点
- ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
- linux 串口总线,linux中的serio(虚拟串行输入输出)总线
- easyui datebox 设置只读
- SAP 系统License查看申请及导入
- Edge使用Flash
- 原生android 操作系统,为什么氢OS被称为最接近原生安卓的操作系统?
- 本周最新文献速递20220227
- 火山PC自绘高级表格及超级列表框
- PYTHON 编写程序实现以下功能:计算beg到end之间的所有水仙花数并输出。如果beg到end之间不存在水仙花数,则输出“not found”。
- 中国家电闯入国外运营费成本比中国高
- k8s学习笔记——ceph rbd本地手动挂载
- LogStash 7.x com.mysql.cj.jdbc.Driver not loaded的解决方法
- 收集的css动画效果
- 求两个文件的交集、并集和差集 sort和uniq
- SSL/TLS 双向认证
- 芯片制造的辉煌已成过去,芯片产能过剩导致代工价格已暴跌两成
- Matlab编程和其他语言的区别