详解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解析网页源代码中的115网盘链接实例
Sep 30 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
python 中split 和 strip的实例详解
Jul 12 Python
Python 多线程Threading初学教程
Aug 22 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 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 表单提交给自己
2008/07/24 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
js实现表格字段排序
2014/02/19 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
ReactRouter的实现方法
2021/01/25 Javascript
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
Python更换pip源方法过程解析
2020/05/19 Python
python属于软件吗
2020/06/18 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
倡议书范文
2014/04/16 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
金砖之国观后感
2015/06/11 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android