详解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 06 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
python pyheatmap包绘制热力图
Nov 09 Python
我就是这样学习Python中的列表
Jun 02 Python
python hashlib加密实现代码
Oct 17 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
用Python制作音乐海报
Jan 26 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 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
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
详解Angular 开发环境搭建
2017/06/22 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
python 中的int()函数怎么用
2017/10/17 Python
Python入门之后再看点什么好?
2018/03/05 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
Python的Lambda函数用法详解
2019/09/03 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
关于python 跨域处理方式详解
2020/03/28 Python
详解Django中异步任务之django-celery
2020/11/05 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
竞职演讲稿范文
2014/01/11 职场文书
励志演讲稿范文
2014/04/29 职场文书
2014年市场部工作总结
2014/11/25 职场文书
2014年节能工作总结
2014/12/18 职场文书
辞职申请书范本
2019/05/20 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书