前言
介绍如何使用Tkinter构建一个简易的图形用户界面。
在使用Python方便我们的日常工作时,我们可能希望将脚本、程序打包起来,方便我们在多端使用或供他人使用。对于那些不了解如何使用命令行程序的用户而言,设计一个可用的图形用户界面就十分重要。
Tkinter
如果你还不知道什么是Tkinter:
Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”;从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装。Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在 Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行。
你可能会注意到 tkinter 下的 ttk 组件库,它们似乎拥有着与tkinter相似的组件:
tkinter中的窗口小部件高度易于配置。您几乎可以完全控制它们的外观:边框宽度,字体,图像,颜色等。
ttk小部件使用样式定义外观,因此,如果要使用非标准按钮,则需要花费更多的工作。 ttk小部件的文档也很少。理解底层的主题和布局引擎(小部件本身中的布局,而不是pack,grid和place)是一个挑战。
总的来说,如果想使GUI程序更加美观,更现代,ttk组件库能够帮到你,但本篇作为 silencezheng.top 的第一篇tkinter相关文章,将不会谈论这一组件库。
写本篇文章的目的在于讲述如何快速的为Python程序制作一个“单页GUI”,不会涉及过多的技术细节,仅要求读者对于GUI程序的基本组件和设计逻辑有一个基本的了解。
设计界面布局
有许多可视化布局工具可供使用,这里我推荐一个在线布局工具:https://www.pytk.net/tkinter-helper/
当然,如果不想使用这个工具(或者以后它需要付费了),只要有一个合理的代码框架也可以很容易的对界面布局进行设计,下面我提供一个左右布局(包含两个Frame)的代码框架。
1 | # author: SilenceZheng66 |
效果如下:
设计一个简易的文件编辑器
做事情需要有目标,下面我们的目标就是以方才提供的布局为蓝本,设计一个文件编辑器。
左侧Frame用来提供输入和功能按钮,右侧Frame用来显示内容。
输入和功能区域
我们希望可以提供两种打开文本文件的方式,输入路径或通过文件选择器进行选择。 这使用到四个组件:Label、Entry、Button和Filedailog,但我们先关注前三个。
另外,我们希望提供 编辑 和 保存 两个功能按钮,这方便我们对文本文件进行编辑操作。
我习惯直接上代码,在代码中注释思路,这里我们仅关注左侧Frame部分。当然这一部分没什么可说的,相信读者看一眼就能明白。
1 | # author: SilenceZheng66 |
效果如下:
内容显示区域
我们使用带滚动条的文本组件ScrolledText来实现这部分内容:
1 | # author: SilenceZheng66 |
效果如下:
绑定事件
到这里,界面的主体框架就已经实现了,最后一步就是将按钮和事件进行绑定,并添加上一定的逻辑。
1 | # author: SilenceZheng66 |
界面美化
简易界面不代表完全没有美化,适当的颜色变化可以显著提高界面的可用性,方便用户操作。下面是部分代码示例:
1 | # author: SilenceZheng66 |
效果如下:
这里没有过多调整组件背景颜色是由于MacOS下很多组件的背景调色会失效,比如Button。有一个库叫tkmacosx可以解决。
后记
首发于 silencezheng.top,转载请注明出处。