tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写,也特别适合初学者学习GUl编程。 

Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可以直接使用它,而无须另行安装。

1. hello world

from tkinter import Tk, Label
root = Tk()
label = Label(root, text="hello world")
label.pack()        # pack() ⇒ 起到 Layout 布局的作用
root.mainloop()

2. 按钮及其事件

from tkinter import Tk, Frame, Label, Button, Entry
from tkinter import DoubleVar


class TempConverter:
    def __init__(self, master):
        mainframe = Frame(master)
        mainframe.pack()

        label1_1 = Label(mainframe, text='deg C')
        label1_1.grid(row=0, column=0)

        self.c_val = DoubleVar()
        entry1_2 = Entry(mainframe, textvariable=self.c_val)
        entry1_2.grid(row=0, column=1)

        self.f_val = DoubleVar()

        label2_1 = Label(mainframe, text='deg F')
        label2_1.grid(row=1, column=0)

        label2_2 = Label(mainframe, textvariable=self.f_val)
        label2_2.grid(row=1, column=1)

        button = Button(mainframe, text='Convert', command=self.convert)
        button.grid(row=2, columnspan=2)

    def convert(self):
        self.f_val.set(self.c_val.get() * 1.8 + 32)

root = Tk()
root.wm_title('tmp converter')
converter = TempConverter(root)
root.mainloop()

通过 grid() 成员的 row 和 column 属性进行布局,layout 如下:

python扩展 settings更改 python扩展名gui_python

3. Tkinter常用控件和属性

3.1. 控件类型

控件类型

控件名称

控件作用

Button

按钮

点击按钮时触发/执行一些事件(函数)

Canvas

画布

提供绘制图,比如直线、矩形、多边形等

Checkbutton

复选框

多项选择按钮,用于在程序中提供多项选择框

Entry

文本框输入框

用于接收单行文本输入

Frame

框架(容器)控件

定义一个窗体(根窗口也是一个窗体),用于承载其他控件,即作为其他控件的容器

Lable

标签控件

用于显示单行文本或者图片

LableFrame

容器控件

一个简单的容器控件,常用于复杂的窗口布局。

Listbox

列表框控件

以列表的形式显示文本

Menu

菜单控件

菜单组件(下拉菜单和弹出菜单)

Menubutton

菜单按钮控件

用于显示菜单项

Message

信息控件

用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能

messageBox

消息框控件

定义与用户交互的消息对话框

OptionMenu

选项菜单

下拉菜单

PanedWindow

窗口布局管理组件

为组件提供一个框架,允许用户自己划分窗口空间

Radiobutton

单选框

单项选择按钮,只允许从多个选项中选择一项

Scale

进度条控件

定义一个线性“滑块”用来控制范围,可以设定起始值和结束值,并显示当前位置的精确值

Spinbox

高级输入框

Entry 控件的升级版,可以通过该组件的上、下箭头选择不同的值

Scrollbar

滚动条

默认垂直方向,鼠标拖动改变数值,可以和 Text、Listbox、Canvas等控件配合使用

Text

多行文本框

接收或输出多行文本内容

Toplevel

子窗口

在创建一个独立于主窗口之外的子窗口,位于主窗口的上一层,可作为其他控件的容器

3.2. 控件基本属性

属性名称

说明

anchor

定义控件或者文字信息在窗口内的位置

bg

bg 是 background 的缩写,用来定义控件的背景颜色,参数值可以颜色的十六进制数,或者颜色英文单词

bitmap

定义显示在控件内的位图文件

borderwidth

定于控件的边框宽度,单位是像素

command

该参数用于执行事件函数,比如单击按钮时执行特定的动作,可将执行用户自定义的函数

cursor

当鼠标指针移动到控件上时,定义鼠标指针的类型,字符换格式,参数值有 crosshair(十字光标)watch(待加载圆圈)plus(加号)arrow(箭头)等

font

若控件支持设置标题文字,就可以使用此属性来定义,它是一个数组格式的参数 (字体,大小,字体样式)

fg

fg 是 foreground 的缩写,用来定义控件的前景色,也就是字体的颜色

height

该参数值用来设置控件的高度,文本控件以字符的数目为高度(px),其他控件则以像素为单位

image

定义显示在控件内的图片文件

justify

定义多行文字的排列方式,此属性可以是 LEFT/CENTER/RIGHT

padx/pady

定义控件内的文字或者图片与控件边框之间的水平/垂直距离

relief

定义控件的边框样式,参数值为FLAT(平的)/RAISED(凸起的)/SUNKEN(凹陷的)/GROOVE(沟槽桩边缘)/RIDGE(脊状边缘)

text

定义控件的标题文字

state

控制控件是否处于可用状态,参数值默认为 NORMAL/DISABLED,默认为 NORMAL(正常的)

width

用于设置控件的宽度,使用方法与 height 相同