Tk 的基本概念-组件—Tkinter 教程系列03

购物返利 https://m.cpa5.cn/

前言

Tk 系列教程:

  • Tkinter教程系列01——引言和安装Tk
  • Tkinter教程系列02——第一个真正的 GUI 程序

通过上一节的程序实例,我们掌握了编写一个 Tk 程序的基本步骤和完成它需要的一些工作。这一节,我们回过头来看看这些程序,并且专注于讲解对于理解 Tk 至关重要的三个概念:1、组件(Widgets)2、集合管理(Geometry Management)3、事件处理(Event Handling)。

组件(Widgets)

组件是所有你在屏幕上看到的东西。在我们的例子中,我们创建了一个按钮(button),输入框(entry),显示区域(labels)和一个框架(frame)。一些其他的组件包括:复选框(checkboxes),树状视图(tree views),滚动条(scrollbars),文字区域(text areas)等等。

组件经常被认为是控制组件(控件),但是他们是组成视窗的基本单位。

组件类(Widget Classes)

组件是对象,是代表按钮,框架等类的实例。所以你要做的第一件事情是区分你要创建并实例化的类。

窗口层次结构(Window Hierarchy)

在创建一个组件的对象时,需要提供它的父类。所以我们需要理解它们的层次结构。在 Tk 中,所有的组件都是一个窗口层次结构中的一部分。在这个结构中,主窗口(root)在最顶层,并能往下延申。

在我们第二节的例子中,我们创建了一个主窗口(root),并在其下面延申了许多结构,这类似于数据结构中的数(tree),每个子结构都是这个大结构的子树。

创建并使用组件(Creating and Using Widgets)

每一个组件都是 Python 中的一个对象。当创建一个组件时,我们必须向创建函数以参数的形式传递它的父类。唯一的例外是主窗口(root),它是窗口结构层次的顶层,没有父类。例如:

root = Tk()
content = ttk.Frame(root)
button = ttk.Button(content)

至于是否将组件对象保存到变量中,这取决于你的想法,当然也取决于你之后是否会引用他们。因为对象存在于这个窗口层次结构之中,所以即使你不去引用它们,它们也不会被垃圾回收器回收掉。

设置选项(Configuration Options)

所有的组件都有许多不同的设置选项,它们控制随着组件的显示和行为。

可用的设置选项取决于你所使用的组件类。大部分组件都有极大的相似性,所以在不同的组件中,执行相同事件的选项基本上被命名为相同的名字。例如,按钮(button)和显示框(label)都有 text 选项,用来控制字符在组件中的显示。而滚动条(scrollbar)就没有这个选项,因为它也不需要。同样的道理,按钮类中有 command 选项,用来告诉它如果被点击,需要执行的动作,而其他类则没有。

设置选项可以通过传递参数在第一次创建时被设置,你可以在之后查看或者修改它们。如果你不确定一个组件的所有选项,你可以直接向组件询问它们。下面是一组 Python 解释器的交互记录,可以很好的说明这一点。

% python
>>> from tkinter import *
>>> from tkinter import ttk
>>> root = Tk()
# 创建按钮,通过传递两个参数:
>>> button = ttk.Button(root, text="Hello", command="buttonpressed")
>>> button.grid()
# 查看按钮的 text 选项的值:
>>> button['text']
'Hello'
# 改变 text 选项的值:
>>> button['text'] = 'goodbye'
# 另一个方法:
>>> button.configure(text='goodbye')
# 检查现在 text 选项的值:
>>> button['text']
'goodbye'
# 得到 button 组件 text 选项的所有信息:
>>> button.configure('text')
('text', 'text', 'Text', '', 'goodbye')
# 得到所有button组件的所有选项的信息和可能的取值:
>>> button.configure()
{'cursor': ('cursor', 'cursor', 'Cursor', '', ''), 'style': ('style', 'style',
'Style', '', ''),
'default': ('default', 'default', 'Default', <index object at 0x00DFFD10>,
<index object at 0x00DFFD10>),
'text': ('text', 'text', 'Text', '', 'goodbye'), 'image': ('image', 'image',
'Image', '', ''),
'class': ('class', '', '', '', ''), 'padding': ('padding', 'padding', 'Pad', '',
''),
'width': ('width', 'width', 'Width', '', ''),
'state': ('state', 'state', 'State', <index object at 0x0167FA20>, <index object
at 0x0167FA20>),
'command': ('command', 'command' , 'Command', '', 'buttonpressed'),
'textvariable': ('textvariable', 'textVariable', 'Variable', '', ''),
'compound': ('compound', 'compound', 'Compound', <index object at 0x0167FA08>,
<index object at 0x0167FA08>),
'underline': ('underline', 'underline', 'Underline', -1, -1),
'takefocus': ('takefocus', 'takeFocus', 'TakeFocus', '', 'ttk::takefocus')}

后记

下一部分我们将会介绍关于 Tk 中 几何管理(Geometry Management)这一概念。

欢迎光临我的个人博客:chens.life

Tk 的基本概念-组件—Tkinter 教程系列03相关推荐

  1. 【Methodot低代码教程系列03】——零代码十分钟制作电影票房管理后台

    Methodot低代码教程系列第三课来啦! 本期课程详细视频戳这里>https://www.bilibili.com/video/BV1644y177Yy?spm_id_from=333.999 ...

  2. 数字猜谜游戏python_Python Tkinter教程系列02:数字猜谜游戏

    Tkinter是Python的Tk GUI(图形用户界面)工具包和事实上的标准GUI 的标准接口.GUI使您可以使用大多数操作系统使用的可视项(例如窗口,图标和菜单)与计算机进行交互.这个功能强大的工 ...

  3. python剪刀石头布_Python Tkinter教程系列01:剪刀石头布游戏

    编写剪刀石头布游戏 让我们使用Python 3和Tkinter开发相同的游戏.我们可以将游戏命名为Rock-Paper-Scissors-Lizard-Spock. 规则和玩法Rock crushes ...

  4. eeglab教程系列(13)-学习和删除ICA组件

    研究组件属性的操作:Tools > Reject data using ICA > Reject components by map.操作过程如下: 出现如下界面后,点击"OK& ...

  5. PowerDesigner教程系列(四)概念数据模型

    PowerDesigner教程系列(四)概念数据模型 原文http://www.cnblogs.com/yxonline/archive/2007/04/11/708271.html 目标: 本文主要 ...

  6. 微信小程序之组件 —— 微信小程序教程系列(19)

    什么是组件: 组件是视图层的基本组成单元. 组件自带一些功能与微信风格的样式. 一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内. <tagname property ...

  7. python tk教程_【转】【Python】Tkinter教程

    什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安 ...

  8. python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...

    时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...

  9. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡

    为什么80%的码农都做不了架构师?>>>    ttlsa教程系列之MySQL ---- MySQL/Galera集群-多主高可用性负载均衡 Percona和MariaDB发布版本中 ...

最新文章

  1. 精妙的单片机非阻塞延时程序设计
  2. 2017-10-29—英语发音的一些技巧总结
  3. qrcode——js生成二维码
  4. ubuntu 将某个目录下的文件复制到_命令行 将多个特定文件从一个文件夹复制到另一个文件夹...
  5. Mybatis常用总结:参数,返回,执行sql,include等
  6. DevOps vs. Agile:它们有什么共同点?
  7. 9.FreeRTOS学习笔记-任务通知
  8. VIPKID义务援手韦博英语,承接其“嗨英语”部分学员
  9. python编程之处理GB级的大型文件
  10. Fffmpeg:从AVFrame中由YUV获取RGB
  11. sop流程图模板_SOP模板-标准操作流程编写程序
  12. 微信公众号推文新手排版快速入门
  13. CSS Border(边框)
  14. 日活两亿的快手,如何用AI理解视频、做好分发
  15. 一副眼镜一千多贵吗_央视曝光!一副眼镜上千元,出厂价却只要几十元
  16. 数字科技陪伴企业成长|突破封锁,庚顿数据助力中国名牌全球瞩目
  17. 黄卫龙 谈“太极起势”的练法
  18. 景联文科技—专业数据采集公司和智能数据管理执行一体化平台
  19. ios 检测是否联网_iOS 设备打开触动精灵提示“您的网络不给力哦,请检查您的设备是否联网”怎么解决?...
  20. 收银系统的优势功能有哪些?

热门文章

  1. 《Python编程:从入门到实践》读书笔记:第6章 字典
  2. 多模分频器原理及simulink建模仿真
  3. ORB-SLAM2源码特征点提取
  4. 【IP地址】IP地址与子网划分
  5. PostgreSQL之日期时间小结
  6. Chromium浏览器(CEF)的命令行列表说明
  7. opensource项目_宣布2018年Opensource.com社区奖获奖者
  8. 读书笔记 - 《史蒂夫·乔布斯传》
  9. 身份证识别web端调用
  10. python如何升级_怎么升级python版本