§3.1 信息类控件¶
字数 1298 个 代码 36 行 图片 12 张 阅读时间 5 分钟 访问量
温馨提示:切换网站主题可切换效果图的主题
本小节的图片大量涉及主题,你可以通过切换网站主题来查看在不同主题下程序运行的效果图,后面的章节也是一样的。网站的主题共有三种模式,分别对应 tkt 的主题三种模式。鼠标移至网站主题切换按钮下可查看当前主题。
一、信息类控件简述¶
1.1 什么是信息类控件¶
信息类控件就是指那些应该用于展示信息,而不具有额外功能的控件,如标签控件。
目前 tkt 内置的信息类控件有 Text
、Image
、Label
和 ProgressBar
。
1.2 注意事项¶
信息类控件的本意就是展示信息的,其不应该包含其他额外的功能,如果需要控件有其他的功能,应该考虑使用其他对应的控件或者自定义一个符合自己需要的控件。
关于自定义控件,后续章节中会详细讲述。
二、信息类控件详述¶
2.1 Text
¶
Text
是文本控件,它的用途是展示一些文本。这些文本可以随着画布的缩放而缩放,随程序的亮色与暗色而改变。
我们可以使用其 get
和 set
方法来获取和设置控件所展示的文本内容。
下面这段代码会在坐标为 (10, 10)
的位置放置一个锚点为西北的文本,该文本的颜色会自动适应主题,同时可以响应画布的缩放。
效果如下:(1)
- 💡你可以通过更改网站主题来查看效果图在不同主题下的样子
实验性功能:控件大小的自动计算
目前对于控件大小的计算并非一定准确的,如果文本中存在换行符等可能导致文本呈现多行效果的字符,控件的大小都会计算错误,此时应该通过控件的初始化参数 position
来手动指定控件的大小,防止控件产生错误的外观。
不仅仅对控件 Text
是这样的,对于后面其它含文本的控件皆是如此。
关于 tkt 对控件大小的计算,见:get_text_size
2.2 Image
¶
Image
是图片控件,用于展示图片,其可以响应画布的缩放,在没有安装 pillow
可选包的时候,仅支持 tkinter
原生图片格式(png 等),安装 pillow
之后可以支持更多的格式而无需更改任何代码。
特别注意:缺少 pillow
可能导致性能低下
在没有安装 pillow
的情况下,图片也是可以缩放的,但缩放的效率极低,极有可能导致窗口缩放时产生严重的卡顿,建议有图片缩放需求的朋友安装一下 pillow
。
如果您已经按照 §1.1 安装 tkintertools 中的推荐方式安装,则不需要关心这则说明。
与上面提到的 Text
控件类似,我们也可以用 get
和 set
方法来获取和设置 Image
控件的内容。
下面的代码是一个简单的示例:
效果如下:
示例中的图片文件是 tkt 的 Logo,可以在此处获取。
tkt 的 Image
相比于 tk 的图片展示会稍微方便一些,对于 tk 展示图片的方法,其 PhotoImage
类有一个问题,其必须是全局变量(保持引用)才可以展示图片,详情见官方文档,而 tkt 的 Image
会对此进行一定的处理,使得某些情况不会出现“空白图片”的问题。
2.3 Label
¶
tkt 的 Label
稍稍不同于 tk 的 Label
,同样是展示信息,但 tk 的 Label
的功能更多的是用上面讲到的 Text
来替代的。这里的 Label
更像是标签真正的意义,也就是用它来展示一个类似于分类标签的东西,比如 GitHub Issue 的标签那样。
下面的代码是一个示例:
效果如下:
温馨提示:部分控件外观与系统相关
部分控件在不同的操作系统下有不同的外观,这是为了使控件更符合操作系统的 UI 风格,一般情况下,都会使用 Windows11 风格的。当然,你也可以强制指定一种风格,在后续章节中会提到这个的。
2.4 ProgressBar
¶
ProgressBar
是进度条控件,相比于 tk 的进度条,tkt 的进度条在外观上有了很大的改善,但功能还不是完整的,缺少了无进度模式。
与前面提到的控件类似,我们可以使用 get
和 set
方法来获取和设置进度条的值,当设置的值小于 0 时被视为 0,大于 1 时被视为 1。
下面是一个简单的示例:
效果如下: