详解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中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
深入理解Django中内置的用户认证
Oct 06 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
django url到views参数传递的实例
Jul 19 Python
Python实现随机取一个矩阵数组的某几行
Nov 26 Python
python 实现dict转json并保存文件
Dec 05 Python
python批量处理txt文件的实例代码
Jan 13 Python
Python爬取365好书中小说代码实例
Feb 28 Python
python的help函数如何使用
Jun 11 Python
彻底搞懂python 迭代器和生成器
Sep 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传参之传值与传址的区别
2015/04/24 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
Python上传package到Pypi(代码简单)
2016/02/06 Python
分享python数据统计的一些小技巧
2016/07/21 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
美国智能家居专家:tink
2019/06/04 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
总经理职责范文
2013/11/08 职场文书
餐饮主管岗位职责
2013/12/10 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
大学生村官典型材料
2014/01/12 职场文书
全运会口号
2014/06/20 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
JS实现数组去重的11种方法总结
2022/04/04 Javascript