Python教程 - Tkinter


目录
  • 用户与程序的交互
    • CLI
    • GUI
  • python上的GUI库 -- Tkinter
    • Tkinter窗体
      • 设置窗体的属性
    • Tkinter显示控件--Label
    • 设置Label的背景颜色
    • Tkinter按钮控件--Button

用户与程序的交互

  • CLI(Command Line Interface,命令行接口)
  • GUI( Graphical User Interface,图形用户接口)

CLI

Command Line Interface,命令行接口,以一行文字作为输入,一般只能显示文字,例如windows自带的cmd

GUI

Graphical User Interface,图形用户接口,我们常用的window系统就有很多丰富的界面,包括窗口、按钮、文本显示,图片显示等等

python上的GUI库 -- Tkinter

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。IDLE、turtle界面也是用 Tkinter 编写而成。

Tkinter窗体

Python自带的可编辑的GUI界面,是一个图像窗口。Tkinter是使用 python 进行窗口视窗设计的模块。
示例:

# 导入tkinter库
import tkinter

# 创建一个窗体
main = tkinter.Tk()
# 进入消息循环,让窗口可以不断刷新
main.mainloop()

设置窗体的属性

import tkinter

main = tkinter.Tk()
# 设置标题
main.title("My First Window")
# 设置大小(宽x高)
main.geometry("300x200")
main.mainloop()

Tkinter显示控件--Label

Label(标签)控件,是最简单的显示控件,可以显示一些文字
示例:

import tkinter

main = tkinter.Tk()
l = tkinter.Label(main,text='First Label')
l.pack()
main.mainloop()


其中'l.pack()'表示将创建的Label控件l放到main布局中

设置Label的背景颜色

可在创建Label控件时指定bg属性为相应的背景颜色
示例:

import tkinter

main = tkinter.Tk()
l = tkinter.Label(main,text='First Label',bg='red')
l.pack()
main.mainloop()

也可以通过config方式进行配置
Label可以设置以下属性

属性 说明
bg 背景颜色
fg 前景颜色,即文字的颜色
text 显示的文字
height 控件的高度,Label中表示为一个字符高度的多少倍
width 控件的宽度,Label中表示为一个字符宽度的多少倍
... ...
示例
import tkinter

main = tkinter.Tk()
l = tkinter.Label(main)
l.config(text='First Label')
l.config(bg='red')
l.pack()
main.mainloop()

Tkinter按钮控件--Button

Button(按钮)可以让用户点击
示例

import tkinter

main = tkinter.Tk()
main.title("My First Window")
main.geometry("300x200")

l = tkinter.Label(main,text='First Label')
l.config(bg='red')
l.config(fg='white')
l.config(height=2)
l.config(width=20)
l.pack()

b = tkinter.Button(main)
b.config(text='First Button')
b.pack()

main.mainloop()


同理,也可以设置config改变背景颜色等属性

import tkinter

main = tkinter.Tk()
main.title("My First Window")
main.geometry("300x200")

l = tkinter.Label(main,text='First Label')
l.config(bg='red')
l.config(fg='white')
l.config(height=2)
l.config(width=20)
l.pack()

b = tkinter.Button(main)
b.config(text='First Button')
b.config(bg='green')
b.pack()

main.mainloop()


以上示例的按钮点击没有任何反应,因为我们还没有设置按钮的command属性,该属性表示点击按钮后会调用的函数。因此我们需要先定义一个函数,例如

def btn_click():
    print('Button Click')

然后,设置按钮的command属性为上面定义的btn_click函数

b.config(command=btn_click)

完整代码为:

import tkinter

main = tkinter.Tk()
main.title("My First Window")
main.geometry("300x200")

l = tkinter.Label(main,text='First Label')
l.config(bg='red')
l.config(fg='white')
l.config(height=2)
l.config(width=20)
l.pack()

b = tkinter.Button(main)
b.config(text='First Button')
b.config(bg='green')
b.pack()

main.mainloop()

运行程序,点击按钮,观察IDLE输出,可以观察到,每次点击按钮,IDLE都会输出一句Button Click