详解python3中tkinter知识点


Posted in Python onJune 21, 2018
#导入tkinter模块,以及导入ttk模块,tkinter是python结合tk的标准接口,ttk是TK8.5之后加入的“主题化工具包”
from tkinter import *
from tkinter import ttk

#定义的计算函数,完成英尺到米的换算
def calculate(*args):
  try:
    value = float(feet.get())
    meters.set((0.3048 * value * 10000.0 + 0.5)/10000.0)
  except ValueError:
    pass

'''
创建了一个主窗口;
主窗口标题为:“Free to Meters”
通过ttk.Frame创建了一个框架容器;所以界面内容都放在框架中,并把框架放在主窗口root中;
通过grid指定框架的位置,以及对齐方式:sticky说明使用罗盘式方位,控件将要如何在网格单元格里排放(NWES分别表示上左右下);
columnconfigure方法告诉tk自适应宽度;
rowconfigure方法告诉tk自适应高度
'''
root = Tk()
root.title("Feet to Meters")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

feet = StringVar()
meters = StringVar()

feet_entry = ttk.Entry(mainframe, width=7, textvariable=feet)
feet_entry.grid(column=2, row=1, sticky=(W, E))

ttk.Label(mainframe, textvariable=meters).grid(column=2, row=2, sticky=(W, E))
ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=3, row=3, sticky=W)

ttk.Label(mainframe, text="feet").grid(column=3, row=1, sticky=W)
ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)
ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=W)

'''
检查框架内的所有控件,并在每个控件之间增加一点距离,使他们看起来没那么拥挤;
告诉tk把注意力转移到我们的输入框上;也就是说在开始的时候,光标默认会在输入框,当用户输入的时候不需要去单击
告诉tk用户按下了回车键和单击计算按钮是一样的,会调用计算程序段
'''
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
feet_entry.focus()
root.bind('<Return>', calculate)

#tk让他的事件循环,这样才能让所有的事件运行
root.mainloop()

忘记了什么?

这里还有一些值得检查而我们没有在Tk程序中包括的。例如:

  • ·我们没有考虑当事件改变时重绘界面
  • ·我们没有考虑评价发送事件消息,捕获监测,或者在每个空间上处理事件
  • ·在创建控件的时候,我们没有提供更多的选项;默认看起来已经关注了很多事情,并且我们仅仅改变了按钮上的显示文本。
  • ·我们没有写复杂的代码来获取和设定简单控件的值,我们仅仅把它们链接到变量
  • ·我们没有考虑当用户关闭窗口或者改变窗口大小后会发生什么
  • ·我们没有写额外的代码让它能够跨平台工作
Python 相关文章推荐
python读取csv文件示例(python操作csv)
Mar 11 Python
python+mysql实现简单的web程序
Sep 11 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
六行python代码的爱心曲线详解
May 17 Python
Python 画出来六维图
Jul 26 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
python中元组的用法整理
Jun 15 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
用python实现学生管理系统
Jul 24 Python
Python中的With语句的使用及原理
Jul 29 Python
关于Python中*args和**kwargs的深入理解
Aug 07 Python
Python3用tkinter和PIL实现看图工具
Jun 21 #Python
Python3.4 tkinter,PIL图片转换
Jun 21 #Python
Python3实现转换Image图片格式
Jun 21 #Python
python3实现域名查询和whois查询功能
Jun 21 #Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 #Python
详解Python下ftp上传文件linux服务器
Jun 21 #Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 #Python
You might like
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
PHP+DBM的同学录程序(3)
2006/10/09 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
python类继承用法实例分析
2015/05/27 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
python中format()函数的简单使用教程
2018/03/14 Python
python3中zip()函数使用详解
2018/06/29 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
食品厂厂长岗位职责
2014/01/30 职场文书
意向协议书范本
2014/04/23 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
倡议书作文
2015/01/19 职场文书
中英文求职信范文
2015/03/19 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
python装饰器代码解析
2022/03/23 Python