zoukankan      html  css  js  c++  java
  • Tkinter初体验

    一、基本步骤
    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方向空白区域保留大小

  • 相关阅读:
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    sql之group by的用法
    jmeter参数化
    jmeter--FTP测试
    jmeter基础概念
    开源性能测试工具——jemeter介绍+安装说明
    mysql安装图解 mysql图文安装教程(详细说明)
    Elasticsearch全文检索优化研究
    如何正确的关闭Elasticsearch集群
    自定义查询系统架构设计分析
  • 原文地址:https://www.cnblogs.com/Hughzm/p/4900665.html
Copyright © 2011-2022 走看看