博主今天总结这段时间抽空写的一个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实现表格自动更新)相关推荐

  1. python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅

    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然. 要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优 ...

  2. python eval 入门_Python学习笔记整理3之输入输出、python eval函数

    Python学习笔记整理3之输入输出.python eval函数 来源:中文源码网    浏览: 次    日期:2018年9月2日 Python学习笔记整理3之输入输出.python eval函数 ...

  3. python pow和**_Python学习笔记 | 实例3:天天向上的力量

    本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> 天天向上的力量 加 ...

  4. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...

  5. python图形设置_python学习笔记——基本图形绘制

    1.python蟒蛇python蟒蛇代码 #PythonDraw.py import turtle turtle.setup(650,350,200,200)# 设置画布的长.宽.起点 turtle. ...

  6. python通信信号处理_python学习笔记——信号模块signal(示例代码)

    基于python学习笔记--多进程间通信--Linux信号基础的学习基础,进一步学习Python标准库中的signal模块. 尽管signal是python中的模块,但是主要针对UNIX平台(比如Li ...

  7. python创建虚拟环境_Python学习笔记:创建Python开发Web程序的虚拟环境

    学习Excel技术,关注微信公众号: excelperfect 这段时间利用业余时间在断断续续地看Eric Matthes著的<Python编程从入门到实践>这本书,毫不夸张地说,这真的是 ...

  8. python画猴子_Python学习笔记(1)

    其实学习每一种语言,都可以找到很快乐的学习方法.有兴趣,有乐趣,才会一直想学.知道print().input().if/else就可以做一个简陋的游戏了. print()#打印函数,将信息打印出来 i ...

  9. python控制流实例_python学习笔记系列----(二)控制流

    实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了P ...

最新文章

  1. 麻省理工人工智能实验室发现更小更容易训练的神经网络
  2. android ndk 读短信,Android NDK之发送短信
  3. 字符数组拷贝与strcpy函数
  4. 一桩物理学“悬案”终被破解
  5. 学计算机土味情话,计算机土味情话
  6. 你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)
  7. 量子点发光二极管显示器行业调研报告 - 市场现状分析与发展前景预测
  8. 前端怎么携带cookie发送php,PHP如何执行传递cookie的http请求并将结果保存到字符串...
  9. 解决微信浏览器无法使用reload()刷新页面
  10. java 反射与封装性的_Java反射的封装
  11. as4上安装apache,mysql,php,cacti,nagios
  12. HTML5+CSS3+Bootstrap开发静态页面嵌入android webview中
  13. mysql dump hbase_导入mysqldump表结构
  14. 计算机播放音乐没声音为什么,电脑没声音是怎么回事?教你怎么修复
  15. Kubernetes
  16. 解析新时代人工智能机器人的工作原理
  17. Python中常见的__init__.py是什么意思?详解Python import的方式和原理
  18. 计算机常见的应用系统,计算机常见的系统软件
  19. 《线性代数应该这样学》读书笔记
  20. tl wdr5660虚拟服务器,TP-Link TL-WDR5600路由器端口映射怎么设置

热门文章

  1. PDF在线转PPT,不用下载软件网页在线即可转换!
  2. 区块链与量子计算(九章)
  3. 手机充电速度到底取决于充电头还是数据线?
  4. Dubbo2.6.x—注册中心源码分析 dubbo-registry模块 (api and zookeeper)
  5. Web大学生网页作业成品 :黑色主题个人博客网站设计与实现(HTML+CSS+JavaScript)
  6. 京东超重型无人机项目遭质疑,又有四家公司获得了大额融资
  7. 电脑上浏览手机版网页
  8. 温州市民用建筑能耗信息管理平台 数据采集器 上行传输通信协议 GateWay iot.wznhjc.cn
  9. Linux学习笔记(1)-初识终端(打开终端快捷方式)
  10. Java Essentials: Preventing ConcurrentModificationException