python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)
博主今天总结这段时间抽空写的一个GUI编程项目
功能是查看本地打印机队列,可选择指定队列重新打印
直接上图
UI设计包括3个区域左上方,右上方和下方列表区域
使用网格grid方法来分配位置
下面是界面设计的代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
from printer_pywin32 import PrinterPywin32
import ttk
class PrinterTkinter:
def __init__(self):
self.root = Tk()
self.root.title("打印机监控系统")
self.frame_left_top = Frame(width=400, height=200)
self.frame_right_top = Frame(width=400, height=200)
self.frame_center = Frame(width=800, height=400)
self.frame_bottom = Frame(width=800, height=50)
# 定义左上方区域
self.left_top_title = Label(self.frame_left_top, text="打印状态:", font=('Arial', 25))
self.left_top_title.grid(row=0, column=0, columnspan=2, sticky=NSEW, padx=50, pady=30)
self.var_success = StringVar() # 声明成功数
self.var_false = StringVar() # 声明失败数
self.left_top_frame = Frame(self.frame_left_top)
self.left_top_frame_left1 = Label(self.frame_left_top, text="打印成功数", font=('Arial', 20))
self.left_top_frame_left2 = Label(self.frame_left_top, textvariable=self.var_success, font=('Arial', 15))
self.get_success() # 调用方法更新成功数
self.left_top_frame_right1 = Label(self.frame_left_top, text="打印失败数", font=('Arial', 20))
self.left_top_frame_right2 = Label(self.frame_left_top, textvariable=self.var_false, font=('Arial', 15))
self.get_false() # 调用方法更新失败数
self.left_top_frame_left1.grid(row=1, column=0)
self.left_top_frame_left2.grid(row=1, column=1)
self.left_top_frame_right1.grid(row=2, column=0)
self.left_top_frame_right2.grid(row=2, column=1)
# 定义右上方区域
self.var_entry = StringVar()
self.right_top_title = Label(self.frame_right_top, text="重新打印的任务编号:", font=('Arial', 20))
self.right_top_entry = Entry(self.frame_right_top, textvariable=self.var_entry)
self.number = int
self.right_top_button = Button(self.frame_right_top, text="确定", command=self.button_restart, font=('Arial', 15))
self.right_top_title.grid(row=0, column=0)
self.right_top_entry.grid(row=1, column=0)
self.right_top_button.grid(row=2, column=0, padx=20, pady=20)
# 定义中心列表区域
self.tree = ttk.Treeview(self.frame_center, show="headings", height=18, columns=("a", "b", "c", "d", "e"))
self.vbar = ttk.Scrollbar(self.frame_center, orient=VERTICAL, command=self.tree.yview)
# 定义树形结构与滚动条
self.tree.configure(yscrollcommand=self.vbar.set)
# 表格的标题
self.tree.column("a", width=50, anchor="center")
self.tree.column("b", width=200, anchor="center")
self.tree.column("c", width=200, anchor="center")
self.tree.column("d", width=100, anchor="center")
self.tree.column("e", width=150, anchor="center")
self.tree.heading("a", text="编号")
self.tree.heading("b", text="打印时间")
self.tree.heading("c", text="打印名称")
self.tree.heading("d", text="打印任务编号")
self.tree.heading("e", text="打印状态")
# 调用方法获取表格内容插入
self.get_tree()
self.tree.grid(row=0, column=0, sticky=NSEW)
self.vbar.grid(row=0, column=1, sticky=NS)
# 整体区域定位
self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
self.frame_right_top.grid(row=0, column=1, padx=30, pady=30)
self.frame_center.grid(row=1, column=0, columnspan=2, padx=4, pady=5)
self.frame_bottom.grid(row=2, column=0, columnspan=2)
self.frame_left_top.grid_propagate(0)
self.frame_right_top.grid_propagate(0)
self.frame_center.grid_propagate(0)
self.frame_bottom.grid_propagate(0)
self.root.mainloop()
# 得到打印成功数
def get_success(self):
self.var_success.set(PrinterPywin32.get_success())
self.left_top_frame_left2.after(500, self.get_success)
# 得到打印失败数
def get_false(self):
self.var_false.set(PrinterPywin32.get_false())
self.left_top_frame.after(500, self.get_false)
# 表格内容插入
def get_tree(self):
# 删除原节点
for _ in map(self.tree.delete, self.tree.get_children("")):
pass
# 更新插入新节点
for i in range(len(PrinterPywin32.get_enumjobs())):
self.tree.insert("", "end", values=(i + 1, PrinterPywin32.get_enumjobs()[i]["Submitted"],
PrinterPywin32.get_enumjobs()[i]["pPrinterName"],
PrinterPywin32.get_enumjobs()[i]["JobId"],
PrinterPywin32.get_enumjobs()[i]["Status"]))
self.tree.after(500, self.get_tree)
# 重新打印
def button_restart(self):
self.number = self.right_top_entry.get()
PrinterPywin32.printer_restart(self.number)
if __name__ == '__main__':
PrinterTkinter()
这里实现了Label控件标题文字的定时更新与表格内容的自动更新
Python学习笔记-CGI编程(如何在IIS上挂Python开发的Webservice)
一.如何用Python开发一个简单的Webservice 利用python的cgi编程,可以传入参数将结果输出. 定义需要编码以及需要引用的模块 #conding=utf-8 #修正中文乱码 impo ...
python学习笔记08-- socket编程
本节内容: 一.网络基础知识 二.socket概念及相关语法 2.1socket概念 2.2socket解释 2.3socket模块功能介绍 2.4socket粘包问题 2.5Socket多并发 一. ...
Python学习笔记(四)函数式编程
高阶函数(Higher-order function) Input: 1 abs Output: 1 Input: 1 abs(-10) Output: 1 ...
Python学习笔记九
Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...
Deep learning with Python 学习笔记(8)
Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...
python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
Python学习笔记进阶篇——总览
Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...
Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
随机推荐
linq/EF/lambda 比较字符串日期时间大小
在使用EF时,想要比较字符串类型的日期时,参考以下: SQL语句: 1 2 3 4 1)select * from TableName where StartTime > '2015-04-08 ...
SQL语法粗整理
1.在同一张表中,对前一条数据进行更新性插入操作,即:
Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结
Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结 1. 服务端table控件的几个流程周期 1 1.1. 确认要显示 ...
JDK Tools - jps: JVM 进程状态工具
jps(Java Virtual Machine Process Status Tool) 是 JDK 提供的一个显示当前所有 Java 进程实例的命令. 命令格式 jps [ options ] [ ...
谓词(NSPredicate)
OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤 ...
让Android中的webview支持页面中的文件上传
android webview在默认情况下是不支持网页中的文件上传功能的: 如果在网页中有,在android webview中 ...
How to view the DNS address assigned by DHCP
nmcli connection show clear-corporate | grep IP4 IP4.ADDRESS[1]: 101.8.112.9 ...
[NewLife.XCode]增删改查入门
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...
八(第三篇)、主体结构元素——time元素、pubdate属性
python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)相关推荐
- python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅
Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然. 要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优 ...
- python eval 入门_Python学习笔记整理3之输入输出、python eval函数
Python学习笔记整理3之输入输出.python eval函数 来源:中文源码网 浏览: 次 日期:2018年9月2日 Python学习笔记整理3之输入输出.python eval函数 ...
- python pow和**_Python学习笔记 | 实例3:天天向上的力量
本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> 天天向上的力量 加 ...
- python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例
本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...
- python图形设置_python学习笔记——基本图形绘制
1.python蟒蛇python蟒蛇代码 #PythonDraw.py import turtle turtle.setup(650,350,200,200)# 设置画布的长.宽.起点 turtle. ...
- python通信信号处理_python学习笔记——信号模块signal(示例代码)
基于python学习笔记--多进程间通信--Linux信号基础的学习基础,进一步学习Python标准库中的signal模块. 尽管signal是python中的模块,但是主要针对UNIX平台(比如Li ...
- python创建虚拟环境_Python学习笔记:创建Python开发Web程序的虚拟环境
学习Excel技术,关注微信公众号: excelperfect 这段时间利用业余时间在断断续续地看Eric Matthes著的<Python编程从入门到实践>这本书,毫不夸张地说,这真的是 ...
- python画猴子_Python学习笔记(1)
其实学习每一种语言,都可以找到很快乐的学习方法.有兴趣,有乐趣,才会一直想学.知道print().input().if/else就可以做一个简陋的游戏了. print()#打印函数,将信息打印出来 i ...
- python控制流实例_python学习笔记系列----(二)控制流
实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了P ...
最新文章
- 麻省理工人工智能实验室发现更小更容易训练的神经网络
- android ndk 读短信,Android NDK之发送短信
- 字符数组拷贝与strcpy函数
- 一桩物理学“悬案”终被破解
- 学计算机土味情话,计算机土味情话
- 你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)
- 量子点发光二极管显示器行业调研报告 - 市场现状分析与发展前景预测
- 前端怎么携带cookie发送php,PHP如何执行传递cookie的http请求并将结果保存到字符串...
- 解决微信浏览器无法使用reload()刷新页面
- java 反射与封装性的_Java反射的封装
- as4上安装apache,mysql,php,cacti,nagios
- HTML5+CSS3+Bootstrap开发静态页面嵌入android webview中
- mysql dump hbase_导入mysqldump表结构
- 计算机播放音乐没声音为什么,电脑没声音是怎么回事?教你怎么修复
- Kubernetes
- 解析新时代人工智能机器人的工作原理
- Python中常见的__init__.py是什么意思?详解Python import的方式和原理
- 计算机常见的应用系统,计算机常见的系统软件
- 《线性代数应该这样学》读书笔记
- tl wdr5660虚拟服务器,TP-Link TL-WDR5600路由器端口映射怎么设置
热门文章
- PDF在线转PPT,不用下载软件网页在线即可转换!
- 区块链与量子计算(九章)
- 手机充电速度到底取决于充电头还是数据线?
- Dubbo2.6.x—注册中心源码分析 dubbo-registry模块 (api and zookeeper)
- Web大学生网页作业成品 :黑色主题个人博客网站设计与实现(HTML+CSS+JavaScript)
- 京东超重型无人机项目遭质疑,又有四家公司获得了大额融资
- 电脑上浏览手机版网页
- 温州市民用建筑能耗信息管理平台 数据采集器 上行传输通信协议 GateWay iot.wznhjc.cn
- Linux学习笔记(1)-初识终端(打开终端快捷方式)
- Java Essentials: Preventing ConcurrentModificationException