今天我们将深入学习GUI图形界面编程tkinter, 了解基础组件的使用方式。
tkinter基础组件
在登上天维巨兽身上的时候, 了不起大吃一惊. 作为堪比一个岛屿的存在, 这个生物的身上好像蕴藏着无数的奥秘. 可是刚一下来迎接他们的不是鲜花和掌声, 而是一把匕首. GBK教信徒蜂拥而至, 由于大家事先都知道这些信徒是被控制的, 因此都特意留手. 尽量都将其击晕, 然后由奥菲利亚通过使用净化魔法来解决. 花费了近一天的时间, 才将近百名被控制的信徒解救成功. 然后在恢复意识的信徒的带领下, 了不起进入到了神殿外围的核心地区. 这里有GBL的大祭司和大神官, 也是奥菲利亚昔日的朋友...
Label 标签
Label(标签)主要用于显示文本信息,也可以显示图像。
常用属性:
- width,height: 用于指定区域大小 如果显示是文本,则以单个英文字符大小为单位(一个汉字宽度占 2 个字符位置,高度和英文字符一样);如果显示是图像,则以像素为单位。默认值是 根据具体显示的内容动态调整
- font: 指定字体和字体大小. 如:font = (font_name,size)
- image: 显示在 Label 上的图像,目前 tkinter 只支持 gif 格式
- fg 和 bg: fg(foreground):前景色、bg(background):背景色
- justify: 针对多行文字的对齐,可设置 justify 属性,可选值"left", "center" or "right"
实操代码:
注意:
- Label(标签)主要用于显示文本信息,也可以显示图像
- pack 按照组件的创建顺序将子组件添加到父组件中,按照垂直或者水平的方向自然排布 如果不指定任何选项,默认在父组件中自顶向下垂直添加组件. pack 是代码量最少最简单的一种,可以用于快速生成界面.
Options 选项详解
通过学习 Label 组件,我们发现可以通过 Options 设置组件的属性,从而控制组件的各种状态. 比如:宽度、高度、颜色、位置等等。
可以通过以下三种方式设置 Options 选项,这在各种 GUI 组件中用法都一致:
- 创建对象时,使用可变参数fred = Button(self, fg="red", bg="blue")
- 创建对象后,使用字典索引方式
- 创建对象后,使用 config()方法 fred.config(fg="red", bg="blue")
如何查看组件的 Options 选项?
- 可以通过打印 config()方法的返回值,查看 Options 选项 print(fred.config())
- 通过在 IDE 中,ctrl+鼠标左键 即可进入组件对象的构造方法,进入到方法内观察:
上面代码中有:“standard options 标准选项”和“widget-specific options 组件特定选项”. 我们将常见的选项汇总如下:
Button 按钮
Button(按钮)用来执行用户的单击操作. Button 可以包含文本,也可以包含图像 按钮被单击后会自动调用对应事件绑定的方法. 相关属性参数介绍见上面Options 选项详解部分图片。
实操代码:
运行结果:
利用 lambda 表达式实现传参
lambda 表达式定义的是一个匿名函数,只适合简单输入参数,简单计算返回结果,不适合功能复杂情况lambda 定义的匿名函数也有输入、也有输出,只是没有名字。
语法格式如下:
lambda 参数值列表:表达式
lambda 表达式的参数值列表可以为如下内容
实操代码:
结果展示:
Entry 单行文本框
Entry 用来接收一行字符串的控件. 如果用户输入的文字长度长于 Entry 控件的宽度时, 文字会自动向后滚动 如果想输入多行文本, 需要使用 Text 控件.
Entry构造函数如下图, 相关属性参数介绍见上面Options 选项详解部分图片:
实操代码:
结果展示:
Text 多行文本框
Text(多行文本框)的主要用于显示多行文本,还可以显示网页链接, 图片, HTML 页面, 甚至 CSS 样式表,添加组件等因此,也常被当做简单的文本处理器、文本编辑器或者网 页浏览器来使用。比如 IDLE 就是 Text 组件构成的。
Text 构造函数如下图, 相关属性参数介绍见上面Options 选项详解部分图片:
实操代码:
结果展示:
Radiobutton 单选按钮
Radiobutton 控件用于选择同一组单选按钮中的一个, 可以显示文本,也可以 显示图像。
实操代码:
结果展示:
Checkbutton 复选按钮
Checkbutton 控件用于选择多个按钮的情况. 可以显示文本,也可以显示图像。
实操代码:
结果展示:
canvas 画布
canvas(画布)是一个矩形区域,可以放置图形、图像、组件等。
实操代码:
结果展示:
不同于之前的信徒, 大主教和大祭司实力更加强大, 而且被控制的程度更深. GSC事先进行了分工: 由导师GSC对付大主教, 而了不起对付大祭司. 而当面对真正的强者时, GSC才真正认真起来. 开启名为杀意波动的领域, 只见很大一片区域内, 包括了不起和大祭司所在的区域, 处在领域内的敌人行动明显变得迟缓, 并且眼神中的疯狂仿佛被压制了不少. 了不起赶紧抓住机会, 使用起最近学习到的突刺技能, 在奥菲利亚的增幅下, 命中领主. 大祭司受伤之后, 开始疯狂的召唤GBK教徒, 向其冲去. 然而在导师领域和奥菲利亚的增幅下, 不一会便将这些教徒击晕. 了不起毫不畏惧,步步为营. 近身战结合远程法术, 花费半天时间终于将其在丝血时击晕. 最后在奥菲利亚的净化魔法的帮助下, 大主教和大祭司都恢复了意识. 而他们脱口而出的第一句话, 便让了不起惊掉下巴...
之间他们苏醒之后, 脱口而出的第一句话便是: 伟大的教主大人, 请原谅我等所犯下的罪行...什么? 原来了不起拯救的红发少女是GBK的教主. 在他们三者沟通完毕后, 奥菲利亚也略显歉意地向了不起解释道, 由于之前得知阿拉德大陆上的人都比较奸诈的, 担心我们图谋不轨, 因此没说明其真正身份. 在帮助大祭司和大神官接触控制之后, 明白了我们的伟人, 于是说明情况并请求我们的原谅. 而了不起的心里也有震惊中慢慢恢复, 在原谅了她之后便回到GBK外围住所从长记忆...而了不起由于这两天参与的高强度战斗与大批量敌人的遭遇, 竟然从lv17升到了lv20。