Tkinter

Tkinter是Tk GUI工具包的Python绑定包。它是Tk GUI工具包的标准Python接口，并且是Python的业界标准GUI工具包。Tkinter同时也包含在Python的Linux、Microsoft Windows和Mac OS X标准库中。Tkinter的名字来自Tk interface。 和大多数现代Tk绑定包一样，Tkinter是透過嵌入在Python解释器中的完整Tcl解释器来包装Python实现的。Tkinter的调用被翻译成Tcl命令，这些命令被提供给这个嵌入式解释器，從而使得在單個程序中可混合Python和Tcl。 它也有几种流行的GUI库可用作替代，例如wxPython、PyQt、PySide、Pygame、Pyglet和PyGTK。 该词在不同的文中具有不同的含义，通常指用户显示屏上的某处矩形区域。 指主窗口的子窗口。它将以桌面环境的标准框架和控件装饰。它可以在桌面上移动，通常也可以调整大小。 指图形用户界面中构成应用程序的任何构建块。 核心小部件：容器：框架、标签框架、顶层、窗格窗口。按钮：按钮、单选按钮、复选按钮（复选框）和菜单按钮。文本小部件：标签、消息、文本。条目小部件：缩放、滚动条、列表框、滑块、旋转框、条目（单行）、选项菜单、文本（多行）和画布（矢量和像素图形）。 Tkinter 提供了三个允许显示弹出对话框的模块：tk.messagebox（确认、信息、警告和错误对话框）、tk.filedialog（单文件、多文件和目录选择对话框）和 tk.colorchooser（颜色选择器）。 Python 2.7和Python 3.1合并了Tk 8.5的“主题 Tk”（“ttk”）功能。这使得Tk小部件可以轻松地主题化，使其看起来像运行应用程序的本机桌面环境，从而解决长期以来对Tk（以及因此对Tkinter）的批评。一些小部件是 ttk 独有的，例如组合框、进度条和树状视图小部件. 在Tkinter中，Frame（框架）小部件是复杂布局的基本组织单位。框架是一个矩形区域，可以包含其他小部件。 创建任何小部件时，都会创建父子关系。例如，如果将文本标签放置在框架内，则框架是标签的父小部件。 这是一个带有小部件的小型Python 3 Tkinter应用程序： #!/usr/bin/env python3 from tkinter import * root = Tk() # 创建根窗口 w = Label(root, text="Hello, world!") # 创建一个带有单词的标签 w.pack() # 把标签放进窗口中 root.mainloop() # 开始主循环 对于 Python 2，唯一的区别是import命令中的“tkinter”是大写的“Tkinter （页面存档备份，存于互联网档案馆）”。 创建小部件有四个步骤： 在框架内创建一个小部件。 更改这个小部件的属性。 将它打包到指定的位置，使其可见。开发人员还可以选择使用 .grid()(row=整数，column=整数)（定义行和列来定位小部件，默认为 0）或.place()(relx=整数或小数，rely=整数或小数)（定义框架或窗口中的坐标）。 将其绑定到函数或事件。 这些步骤通常被简化，并且顺序可能会不同。 这是一个在 Python 中使用面向对象的简单的程序（使用Tcl 8.6，但MacOS上的Python默认不使用它）： #!/usr/bin/env python3 import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.grid() self.createWidgets() def createWidgets(self): self.mondialLabel = tk.Label(self, text='Hello World') self.mondialLabel.config(bg="#00ffff") self.mondialLabel.grid() self.quitButton = tk.Button(self, text='Quit', command=self.quit) self.quitButton.grid() app = Application() app.master.title('Sample application') app.mainloop() 第1行：程序的Hashbang指令（英语：Interpreter directive），允许在自执行时选择合适的解释器。 第3行：将tkinter模块导入程序的命名空间，但为其设置别名tk。 第6行：Application类继承自Tkinter的Frame类。 第8行：定义设置Frame的函数。 第9行：调用父类Frame的构造函数。 第13行：定义小部件。 第14行：创建一个名为MondialLabel的标签，其文本为“Hello World”。 第15行：将MondialLabel的背景颜色设置为青色。 第16行：将标签放置在Application上，使其使用grid()几何管理器方法可见。 第17行：创建一个带有文字“Quit”的按钮。 第18行：将按钮放置在应用程序上。grid、place和pack都是使小部件可见的方法。 第21行：主程序从这里开始，创建Application类的实例。 第22行：调用这个方法将窗口标题设置为“Sample application”。 第23行：启动程序的主循环，监听鼠标和键盘事件。 Shipman, John W., Tkinter reference: a GUI for Python, New Mexico Tech Computer Center, 2010-12-12 [2012-01-11], （原始内容存档于2014-07-03）  Archived copy. [2013-11-13]. （原始内容存档于2013-11-13）.  Tkinter — Python interface to Tcl/Tk — Python v2.6.1 documentation. [2009-03-12]. （原始内容存档于2012-10-18）.  Tkinter - Pythoninfo Wiki. [2021-06-25]. （原始内容存档于2020-06-16）.  Python issue #2983, "Ttk support for Tkinter". [2021-06-25]. （原始内容存档于2010-04-19）.  Python subversion revision 69051, which resolves issue #2983 by adding the ttk module.  Tkinter 8.5 reference: a GUI for Python. [2021-06-25]. （原始内容存档于2016-12-04）.  Fleck, Dan. Tkinter – GUIs in Python (PDF). CS112. George Mason University. [18 August 2018]. （原始内容 (PDF)存档于2020-08-09）.  Klein, Bernd. GUI Programming with Python: Events and Binds. www.python-course.eu. [18 August 2018]. （原始内容存档于2021-07-20）.  PEP 397 — Python launcher for Windows — Python.org. [2017-06-07]. （原始内容存档于2021-06-29）.  TkInter, Python Wiki, [2021-06-25], （原始内容存档于2020-06-16）  Tkinter GUI Tutorial （页面存档备份，存于互联网档案馆）：分别涵盖每个小部件。 Lundh, Fredrik, An Introduction to Tkinter, 1999 [2021-06-25], （原始内容存档于2012-10-19）  TkDocs （页面存档备份，存于互联网档案馆）：包括Python信息和教程 Ferg, Stephen, Thinking in Tkinter, [2022-05-18], （原始内容存档于2021-03-07）