详解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处理大数字的方法
May 27 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 Python
详解python深浅拷贝区别
Jun 24 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python机器学习实现决策树
Nov 11 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
pandas数据处理之绘图的实现
Jun 15 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
Python中qutip用法示例详解
Oct 02 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
PyTorch中permute的使用方法
Apr 26 Python
python井字棋游戏实现人机对战
Apr 28 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
php函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python类的多重继承问题深入分析
2014/11/09 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python实现简单俄罗斯方块
2020/03/13 Python
详解python如何引用包package
2020/06/07 Python
python利用faker库批量生成测试数据
2020/10/15 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
安卓程序员求职信
2014/02/28 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers