详解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标准算法实现数组全排列的方法
Mar 17 Python
python中的字典使用分享
Jul 31 Python
python ddt实现数据驱动
Mar 14 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python版名片管理系统
Nov 30 Python
python简单验证码识别的实现方法
May 10 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
python 实现表情识别
Nov 21 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
基于Python实现一个春节倒计时脚本
Jan 22 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
深入理解Python3 内置函数大全
2017/11/23 Python
Python实现Dijkstra算法
2018/10/17 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python读写配置文件操作示例
2019/07/03 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
请解释接口的显式实现有什么意义
2012/05/26 面试题
红领巾心向党广播稿
2014/01/19 职场文书
优秀医生事迹材料
2014/02/12 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
大三学习计划书范文
2014/05/02 职场文书
介绍信范文
2015/01/31 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
红色革命电影观后感
2015/06/18 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang
Hive常用日期格式转换语法
2022/06/25 数据库