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，允许在自执行时选择合适的解释器。
第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行：启动程序的主循环，监听鼠标和键盘事件。

 参考资料 

 外部链接 

 Tkinter GUI Tutorial ：分别涵盖每个小部件。

 TkDocs ：包括Python信息和教程


Category:Python库