目录

  • 二、Tkinter的常用控件和属性
  • 2.1 Tkinter的常用控件
  • 2.2 Tkinter控件的基本属性
  • 2.3 Tkinter中的窗口对象


二、Tkinter的常用控件和属性

2.1 Tkinter的常用控件

下面列出了 Tkinter 中常用的 15 个控件:

名称

说明

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 - 子窗口

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

2.2 Tkinter控件的基本属性

每个控件皆有各自不同的功能,作为控件衍生过来的不同对象,既有相同属性,也有各自独有的属性,我们首先介绍共同属性。

名称

说明

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 相同

2.3 Tkinter中的窗口对象

from Tkinter import Tk
# 创建窗口对象
win = Tk()

下表显示窗口常用方法-

名称

说明

win.title(“my title”)

接受一个字符串参数,为窗口起一个标题

win.resizable()

是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable(0,0)或者resizable(False,False)时不可更改

win.geometry()

设定主窗口的大小以及位置,当参数值为 None 时表示获取窗口的大小和位置信息。

win.quit()

关闭当前窗口

win.update()

刷新当前窗口

win.mainloop()

设置窗口主循环,使窗口循环显示(一直显示,指导窗口被关闭)

win.iconbitmap()

设置窗口左上角的图标(图标是.ico文件类型)

win.config(background =“red”)

设置窗口的背景色为红色,也可以接受 16 进制的颜色值

win.minsize(50,50)

设置窗口被允许调整的最小范围,即宽和高各50

win.maxsize(400,400)

设置窗口被允许调整的最大范围,即宽和高各400

win.attributes(“-alpha”,0.5)

用来设置窗口的一些属性,比如透明度(-alpha)、是否置顶(-topmost)即将主屏置于其他图标之上、是否全屏(-fullscreen)全屏显示等

win.state(“normal”)

用来设置窗口的显示状态,参数值 normal(正常显示),icon(最小化),zoomed(最大化),

win.withdraw()

用来隐藏主窗口,但不会销毁窗口。

win.iconify()

设置窗口最小化

win.deiconify()

将窗口从隐藏状态还原

win.winfo_screenwidth()

获取电脑屏幕的分辨率(尺寸)

win.winfo_screenheight()

0

win.winfo_width()

获取窗口的大小,同样也适用于其他控件,但是使用前需要使用 window.update() 刷新屏幕,否则返回值为1

win.winfo_height()

0

win.protocol(“协议名”,回调函数)

启用协议处理机制,常用协议有 WN_DELETE_WINDOW,当用户点击关闭窗口时,窗口不会关闭,而是触发回调函数。

下面通过一个示例简单介绍方法的使用 -

from tkinter import Tk, Label, Button

win = Tk()
# 设置窗口标题
win.title("Python学习")
# 设置窗口大小:宽x高,注,此处不能为 "*",必须使用 "x"
win.geometry('480x270')
# 获取电脑屏幕的大小
print("电脑的分辨率是%dx%d" % (win.winfo_screenwidth(), win.winfo_screenheight()))
# 要求窗口的大小,必须先刷新一下屏幕
win.update()
print("窗口的分辨率是%dx%d" % (win.winfo_width(), win.winfo_height()))
# 如使用该函数则窗口不能被拉伸
# win.resizable(0,0)
# 改变背景颜色
win.config(background="#6fb765")
# 设置窗口处于顶层
win.attributes('-topmost', True)
# 设置窗口的透明度
win.attributes('-alpha', 1)
# 设置窗口被允许最大调整的范围,与resizble()冲突
win.maxsize(600, 600)
# 设置窗口被允许最小调整的范围,与resizble()冲突
win.minsize(50, 50)
# 更改左上角窗口的的icon图标,加载C语言中文网logo标
# win.iconbitmap('C:/Users/Administrator/Desktop/favicon.ico')
# 添加文本内容,并对字体添加相应的格式 font(字体,字号,"字体类型")
text = Label(win, text="Python学习,网址:study.python.net", bg="green", fg="red",
             font=('Times', 15, 'bold italic underline'))
# 将文本内容放置在主窗口内
text.pack()
# 添加按钮,以及按钮的文本,并通过command 参数设置关闭窗口的功能
button = Button(win, text="关闭", command=win.quit)
# 将按钮放置在主窗口内
button.pack(side="bottom")
# 进入主循环,显示主窗口
win.mainloop()

上面代码的执行结果 -

电脑的分辨率是1366x768
窗口的分辨率是480x270