Tkinter笔记(1)——概述

文章目录

简述

最近有需要通过Python写一个GUI程序。由于时间有限,并且对界面的要求并不高,于是还是选择了Python自带的tkinter库来实现GUI。感觉确实很好上手,在此把一些tkinter的主要用法记录下来备忘。

tkinter也并不是Python语言的一部分,其本质上是对接到Python的Tcl/Tk。因此先简单了解一下Tcl/Tk。这里的Tcl也不是那个买电视机的TCL,而是工具命令语言(Tool Command Language)的简称。这也是一门很好学的脚本语言,主要用于快速原型开发和GUI编程。而Tk就是指Tcl中的GUI工具包。

一般Python都安装了tkinter库,可以通过python -m tkinter查看安装的tkinter版本。

基本用法

既然是GUI,首先就需要一个主窗口,tkinter.Tk类就实现了这个主窗口的创建。一个最简单的tkinter程序如下:

import tkinter as tk

root = tk.Tk()
# 在此之间定义添加各种组件以及各种事件和回调
root.mainloop()

首先通过创建tkinter.Tk类的一个实例创建主窗口,之后就需要调用该类的mainloop方法,将该窗口展示出来并hold住Python脚本,直到将主窗口关闭。

Python与Tcl/Tk

将主窗口建立起来之后自然就是向里面添加各种GUI组件。Python官方虽然提供了Tk图形用户界面的教程,但也没有提供Tk所有组件的详细文档。因此想要查看Tk某个组件的某个详细信息还是要去查看Tcl/Tk的官方文档,但打开Tcl/Tk按钮组件的官方文档看了一眼,直接一脸懵逼。毕竟Tcl也是一门脚本语言,其风格与Python也并不一样。因此还是要找出Python与Tk用法的对应关系,才好一边看着Tcl/Tk的文档,一边写着Python。还好Python官方文档也总结了Tcl/Tk与Python的对应关系

首先就是创建组件,Tk中的命令形式为:classCommand pathname optionsclassCommand就是指组件的名称;pathname就是指组件的路径名称,由于组件都是层级结构,因此通过.分割表示组件之间的从属关系,并且开头必须使用.用于表示根部主窗口组件;最后就是该组件的各种配置,形式就类似命令行-key value。例如button .btn -fg red -text 'click me',就表示创建了一个从属于主窗口的名为btn的按钮,配置其字体颜色为红色,按钮上的文字是’click me’。

在Python中,自然就是通过实例化各种类来实现组件的创建。各组件的在初始化时的第一个参数master就指明了该组件的父组件;name属性就指明了该组件的名称;之后就可以通过关键字参数的形式设置该组件的各种属性。如上面Tk命令行在Python中就是btn = tkinter.Button(root, name='btn', fg='red', text='click me')

参考资料

  • Tcl/Tk官网API:https://www.tcl.tk/
  • Tcl/Tk 8.6 Documentation:https://www.tcl.tk/man/tcl8.6/contents.htm
  • Python 3.7官方tkinter教程:https://docs.python.org/zh-cn/3.7/library/tk.html
上一篇:Python tkinter模块弹出窗口及传值回到主窗口操作详解


下一篇:第十八章 GUI库:tkinter