一、基本步骤
1、导入Tkinter模块
2、创建根窗口
3、填充组件
4、组件关联逻辑
5、进入主循环

二、Code

  1. #coding:utf-8
  2. '''
  3. 网关流量校验器
  4. @author: Hongzm
  5. '''
  6. # 1导入Tkinter模块
  7. from Tkinter import *
  8. import tkMessageBox
  9. class Tool(Frame):
  10.  
  11. def __init__(self, master = None):
  12. Frame.__init__(self, master)
  13. # 标题
  14. self.master.title("网关流量校验器")
  15. # 窗体大小
  16. self.master.geometry('400x200')
  17. self.pack()
  18. self.createWidgets()
  19. self.retransBiasFactor = 0.03
  20.  
  21. def getConsume(self, flow):
  22. intFlow = 0
  23. try:
  24. intFlow = int(flow)
  25. except ValueError as e:
  26. print("change ERROR:%s" % e)
  27. return intFlow
  28.  
  29. def setConsume(self):
  30. if self.fileSize.get() == "":
  31. self.flowConsume.set("")
  32. else:
  33. try:
  34. temp = int(self.fileSize.get())
  35. except ValueError as e:
  36. tkMessageBox.showinfo('Message', "请输入正整数")
  37. else:
  38. temp = int(self.getTotalUsed(temp))
  39. finally:
  40. self.flowConsume.set(str(temp))
  41.  
  42. def setDevia(self):
  43. if(self.flowConsume == "") and (self.ctccRecord.get() == ""):
  44. self.deviation.set("")
  45. else:
  46. try:
  47. gwValue = int(self.flowConsume.get())
  48. ctccValue = int(self.ctccRecord.get())
  49. except ValueError:
  50. tkMessageBox.showinfo('Message', "网厅消耗请输入正整数")
  51. else:
  52. print(gwValue, ctccValue)
  53. temp = 0
  54. if(gwValue != 0):
  55. temp = (ctccValue - gwValue)/float(gwValue)
  56. else:
  57. pass
  58. finally:
  59. self.deviation.set("%.2f%%" % (temp*100))
  60.  
  61. def getTotalUsed(self, dlFlow, ulFlow = 350):
  62. return dlFlow
  63.  
  64. # 4将组件command关联代码逻辑
  65. def createWidgets(self):
  66. # 网关流量消耗变量
  67. self.flowConsume = StringVar()
  68. # 流量偏差变量
  69. self.deviation = StringVar()
  70.  
  71. # 下载文件大小/Entry/Button
  72. Label(self, text="下载文件大小:").grid(row=0, column=0)
  73. self.fileSize = Entry(self)
  74. self.fileSize.grid(row=0, column=1)
  75. Button(self, text="获取实际消耗", command=self.setConsume).grid(row=0, column=3)
  76.  
  77. # 网关流量消耗/Entry
  78. Label(self, text="网关流量消耗").grid(row=1, column=0)
  79. self.gwConsume = Entry(self, textvariable=self.flowConsume)
  80. self.gwConsume.grid(row=1, column=1)
  81.  
  82. # 网厅对应记录/Entry/Button
  83. Label(self, text="网厅对应记录").grid(row=2, column=0)
  84. self.ctccRecord = Entry(self)
  85. self.ctccRecord.grid(row=2, column=1)
  86. Button(self, text="计算流量偏差", command=self.setDevia).grid(row=2, column=3)
  87.  
  88. # 流量偏差/Entry
  89. Label(self, text="流量偏差").grid(row=3, column=0)
  90. Entry(self, textvariable=self.deviation).grid(row=3, column=1)
  91.  
  92. #添加单位B
  93. for i in range(3):
  94. Label(self, text="B").grid(row=i, column=2)
  95.  
  96. self.Quit = Button(self, text="Quit", fg="red", command=root.destroy)
  97. self.Quit.grid(row=4)
  98.  
  99. if __name__ == '__main__':
  100. # 2创建根窗口
  101. root = Tk()
  102. # 3在根窗口中创建所有组件,这里Tool类继承Frame类,这是所有组件(Widget)的父容器
  103. app = Tool(master=root)
  104. # 5进入主循环
  105. app.mainloop()

三、主要组件
控件     描述
Button     按钮控件;在程序中显示按钮。
Canvas     画布控件;显示图形元素如线条或文本
Checkbutton  多选框控件;用于在程序中提供多项选择框
Entry     输入控件;用于显示简单的文本内容
Frame     框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label     标签控件;可以显示文本和位图
Listbox     列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton   菜单按钮控件,由于显示菜单项。
Menu     菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message    消息控件;用来显示多行文本,与label比较类似
Radiobutton  单选按钮控件;显示一个单选的按钮状态
Scale     范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar   滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text     文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox     输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。

四、布局

Pack采用块的方式组织配件,默认从上而下放置。

基本用法是:Widget.pack(side="top")或者Widget.pack(side=TOP)
Grid是网格式布局
基本用法是:Widget.grid(row=0, column=1)
主要参数:
row:控制放置的行数,从0开始算起,默认为上一个位占领的行数
column:控件放置位置的列数,从0开始算起,默认为0
rowspan:设置单元格横向跨越的行数
columnspan:设置单元格纵向跨越列数
ipadx:设置控件里面x方向空白区域大小
ipady:设置控件里面y方向空白区域大小
padx:设置控件周围x方向空白区域保留大小
pady:设置控件周围y方向空白区域保留大小

Tkinter初体验的更多相关文章

  1. python窗体——pyqt初体验

    连续两周留作业要写ftp的作业,从第一周就想实现一个窗体版本的,但是时间实在太短,qt零基础选手表示压力很大,幸好又延长了一周时间,所以也就有了今天这篇文章...只是为了介绍一些速成的方法,还有初学者 ...

  2. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  3. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  4. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  5. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  6. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

  7. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  8. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  9. 百度EChart3初体验

    由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...

随机推荐

  1. Splay平衡树入门小结

    学习到这部分算是数据结构比较难的部分了,平衡树不好理解代码量大,但在某些情况下确实是不可替代的,所以还是非学不可. 建议先学Treap之后在学Splay,因为其实Splay有不少操作和Treap差不多 ...

  2. Flutter的flutter_calendar日曆的使用

    效果: 添加依賴: flutter_calendar: ^0.0.1 項目中導入 import 'package:flutter_calendar/flutter_calendar.dart'; 例子 ...

  3. BZOJ4671 异或图 斯特林反演+线性基

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4671 题解 半年前刚学计数的时候对这道题怀着深深的景仰,现在终于可以来做这道题了. 类似于一般 ...

  4. bzoj1002 轮状病毒 暴力打标找规律/基尔霍夫矩阵+高斯消元

    基本思路: 1.先观察规律,写写画画未果 2.写程序暴力打表找规律,找出规律 1-15的答案:1    5    16    45    121 320 841     2205   5776 151 ...

  5. 网路编程和并发:2.什么是C/S和B/S架构?

    1.C/S 架构 客户端和服务器之间的架构.Client-Server也称客户机服务器模型. 在Client/Server结构的系统中,应用程序分为客户端和服务器两点部分,客户端为每个用户所有,服务器 ...

  6. java基础复习(二)

    一. 基本语法 如果一个源文件中什么内容都没有,编译会不会生成 字节码文件?不会 如果一个类中没有主方法(如下图),编译运行会怎么样?编译可以通过,但运行报错 : 没有主方法 主方法 : 是一个特殊的 ...

  7. python环境变量

    下载并升级更新pip python -m pip install -U pip 变量名:PY_HOME   变量值:python路径 path:win10加在最后(记得用;号隔开):win7加在前面记 ...

  8. springmvc对象作为 目标方法的参数。

    /** * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值.支持级联属性. * 如:dept.deptId.dept.address.tel 等 */ ...

  9. Flutter样式和布局控件简析(二)

    开始 继续接着分析Flutter相关的样式和布局控件,但是这次内容难度感觉比较高,怕有分析不到位的地方,所以这次仅仅当做一个参考,大家最好可以自己阅读一下代码,应该会有更深的体会. Sliver布局 ...

  10. Scribd每月共有超过两亿个访客、累积数亿篇以上的文件档案,Alexa全球排名200以内

    目前已登上世界300大网站,每月共有超过两亿个访客.累积数亿篇以上的文件档案.透过Flash介面的阅读器-iPaper,使用者可以在网站内浏览各种文件,由于该网站是一个文件分享平台,所有的文件都是由使 ...