Tk 是唯一专门为高级动态语言(如 Tcl,Ruby,Perl,Python 等)设计的跨平台(cross-platform,即 Windows,Mac,Unix)图形用户界面工具包。
参考资源:
- 无论您使用哪种语言,TkDocs 网站都会带给您最新,高质量的基本信息,您可以充分利用 Tk。
- Python Tkinter Resources 提供了大量有关从 Python 使用 Tk 的信息,并链接到 Tk 上的其他信息源。
- 在线参考资料:Tkinter 8.5 reference: a GUI for Python | Tkinter docs from effbot
- Tk widgets look fine under Windows:更加友好支持 Windows 的 Tk。
tkinter
是 Python 的标准 GUI (Graphical User Interface) 包。它是 Tcl/Tk 之上的薄薄的面向对象层。大多数时候,tkinter
才是您真正需要的,但是也可以使用许多其他模块。Tk 接口位于名为 _tkinter
的二进制模块中。该模块包含到 Tk 的低级接口,并且绝对不能被应用程序程序员直接使用。它通常是一个共享库(或DLL),但在某些情况下可能与 Python 解释器静态链接。
更多资源见:tkinter。
1 tkinter 应用
使用 HTML/CSS 和 Python 编写的通用 GUI(无需 JavaScript)跨浏览器框架 Atlas toolkit for Python。DearPyGui 是一个 GPU 加速的 Python GUI 框架。它的核心是 DearImGui 的 Python 包装。文档位于 Github Pages 上。
2 关于 tkinter 的思考
我一直在尝试通过各种书籍来 学习 tkinter,但我发现这比我想像的要困难得多。问题在于这些书的作者想着急告诉我有关 tkinter 工具箱中所有小部件的信息,但从来没有真正停下来解释基本概念。他们没有解释如何“在 tkinter 中思考”。本教程试图开始理解一些基本的 tkinter 概念。
这些程序并未尝试全面介绍 tkinter 编程的所有方面。为此,请您参考 Frederik Lundh的 An Introduction to Tkinter 和 Brent Welch的 Practical Programming in Tcl and Tk 。
2.1 GUI 的四个基本编程任务
开发用户界面(UI)时,必须完成一组标准任务。
- 您必须指定想要 UI 外观的方式。也就是说,您必须编写代码来确定用户将在计算机屏幕上看到的内容。
- 您必须确定要 UI 执行的操作。也就是说,您必须编写完成程序任务的例程。
- 您必须将 "looking" 与 "doing" 相关联。也就是说,您必须编写代码,将用户在屏幕上看到的内容与为执行程序任务而编写的例程相关联。
- 最后,您必须编写代码,等待用户输入。
3 tkinter 基础
Python 有很多 GUI 框架,但是 tkinter 是 Python 标准库中唯一内置的框架。tkinter 具有多个优势。它是跨平台的,因此相同的代码可在 Windows,macOS 和 Linux 上运行。视觉元素是使用本机操作系统元素呈现的,因此使用 tkinter 构建的应用程序看起来就像它们属于运行平台一样。
tkinter GUI 的基本元素是窗口(window)。窗口是所有其他 GUI 元素所在的容器。这些其他 GUI 元素,例如文本框,标签和按钮,称为小部件(widgets)。小部件包含在窗口内部。
首先,创建一个包含单个小部件的窗口。窗口是 tkinter 的 Tk
类的一个实例。
from tkinter import Tk
window = Tk()
接着 window.mainloop()
告诉 Python 运行 tkinter 事件循环。此方法侦听事件,例如单击按钮或按键,并阻止运行它之后的所有代码,直到关闭被调用的窗口。
window.mainloop()
当您执行上述代码时,屏幕上会弹出一个新窗口。 它的外观取决于您的操作系统:
可以看到此窗口内是空无一物的,可以添加一个小部件。
使用 Label
类创建一个标签部件:
from tkinter import Tk, Label
window = Tk()
greeting = Label(text="Hello, Tkinter")
您刚刚创建了标签小部件,但尚未将其添加到窗口中。您可以使用 Label
小部件的 .pack()
方法将其添加到窗口中:
greeting.pack()
window.mainloop()
现在窗口看起来是这样的:
3.1 常用的 Widget
小部件是 Python GUI 框架 tkinter 的基础。它们是用户与您的程序进行交互的元素。tkinter 中的每个小部件都由类定义的。以下是一些常用的小部件:
Widget 类 | 描述 |
---|---|
Label | 用于在屏幕上显示文本等的小部件 |
Button | 一个可以包含文本并在单击时可以执行操作的按钮 |
Entry | 文本输入小部件,仅允许单行文本 |
Text | 文本输入小部件,允许多行文本输入 |
Frame | 用于将相关小部件分组或提供填充的矩形区域 |
3.2 使用标签小部件显示文本和图像
标签窗口小部件用于显示文本或图像。用户无法编辑 Label
小部件显示的文本。仅用于显示目的。
标签窗口小部件以默认系统文本颜色和默认系统文本背景颜色显示文本。它们通常分别是黑色和白色,但是如果您在操作系统中更改了这些设置,则可能会看到不同的颜色。
您可以使用 foreground
和 background
参数控制“标签”的文本和背景色:
label = Label(
text="Hello, Tkinter",
foreground="yellow", # Set the text color to yellow
background="black" # Set the background color to black
)
效果:
有许多有效的颜色名称,包括:"red","orange","yellow","green","blue","purple"。tkinter 也可以使用许多HTML color names。这里 提供具有大多数有效颜色名称的图表。有关完整的参考,包括由当前系统主题控制的 macOS 和 Windows 特定的系统颜色,请查看 colors manual page。
您还可以使用 hexadecimal RGB values 指定颜色:
label = Label(text="Hello, Tkinter", background="#34A2FE")
您还可以使用 width
和 height
参数控制标签的宽度和高度:
label = Label(
text="Hello, Tkinter",
foreground="#34A2FE",
background="black",
width=12,
height=10
)
效果:
即使宽度和高度都设置为10,窗口中的标签也不是正方形可能看起来很奇怪。这是因为宽度和高度都是以文本单位测量的。一个水平文本单位由默认系统字体中字符 "0"
的宽度或数字零确定。类似地,一个垂直文本单元由字符 "0"
的高度确定。
注意:tkinter 使用文本单位(而不是英寸,厘米或像素)来测量宽度和高度,以确保跨平台的应用程序行为一致。通过字符宽度来度量单位意味着小部件的大小是相对于用户计算机上默认字体的大小。这样可以确保无论应用程序在何处运行,文本都可以正确地适合标签和按钮。
标签非常适合显示一些文本,但是它们并不能帮助您从用户那里获得输入。接下来要查看的三个小部件都用于获取用户输入。
创建一个按钮:
from tkinter import Button
button = Button(
text="Click me!",
width=25,
height=5,
background="skyblue",
foreground="yellow",
)
效果:
单行文本:
from tkinter import Entry
entry = Entry(foreground="yellow", background="blue", width=50)
效果:
网友评论