自学Python 67 tkinter 组件开发

Python tkinter 组件开发



  为了实现现实项目的需求,在创建一个窗口以后,需要根据程序的功能向窗口中添加对应的组件,然后定义与实际相关的处理函数,这样才算是一个完整的GUI 程序。


一、tkinter组件概览

  在模块tkinter 中提供了各种各样的常用组件,例如按钮、标签和文本框,这些组件通常也被称为控件或者部件。其中最为主要的组件如下表所示。

组件名称描述
Button按钮控件,用于在程序中显示按钮
Canvas画布控件,用于显示图形元素,如线条或文本
Checkbutton多选框控件,用于在程序中提供多项选择框
Entry输入控件,用于显示简单的文本内容
Frame框架控件,用于在屏幕上显示一个矩形区域,多用来作为容器
Label标签控件,用于显示文本和位图
Listbox列表框控件,用于显示一个字符串列表给用户
Menubutton菜单按钮控件,用于显示菜单项
Menu菜单控件,用于显示菜单栏、下拉菜单和弹出菜单
Message消息控件,用来显示多行文本,与标签类似
Radiobutton单选按钮控件,用于显示一个单选按钮的状态
Scale范围控件,用于显示一个数值刻度,表示输出的范围
Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框
Text文本控件,用于显示多行文本
Toplevel容器控件,用来提供一个单独的对话框,与Frame类似
Spinbox微调框控件,与Entry类似,但是可以指定输入范围值
PanedWindow管理窗口布局控件,可以包含一个或者多个子控件
LabelFrame简单的容器控件,常用于复杂的窗口布局
messagebox用于显示应用程序的消息框

  在模块tkinter的组件中提供了对应的属性和方法,其中标准属性是所有控件所拥有的共同属性,例如大小、字体和颜色。模块tkinter中的标准属性如下表所示。

属性描述
Dimension控件大小
Color控件颜色
Font控件字体
Anchor锚点
Relief控件样式
Bitmap位图
Cursor光标

  在模块tkinter 中,控件有特定的几何状态管理方法,管理整个控件区域组织,其中tkinter控件公开的几何管理类有包、网格和位置。具体如下表所示。

几何方法描述
pack()包装
grid()网格
place()位置

  在下面的实例中,演示了使用 Frame布局窗体界面的过程。

from tkinter import *

root = Tk()
root.title("hello world")
root.geometry('300x200')

Label(root, text='Python', font=('Arial', 20)).pack()

frm = Frame(root)
# 左
frm_L = Frame(frm)
Label(frm_L, text='多媒体', font=('Arial', 15)).pack(side=TOP)
Label(frm_L, text='数据库', font=('Arial', 15)).pack(side=TOP)
frm_L.pack(side=LEFT)

# 右
frm_R = Frame(frm)
Label(frm_R, text='游戏', font=('Arial', 15)).pack(side=TOP)
Label(frm_R, text='爬虫', font=('Arial', 15)).pack(side=TOP)
frm_R.pack(side=RIGHT)

frm.pack()

root.mainloop()

  执行后的效果如图所示。
在这里插入图片描述

二、使用按钮控件

  在Tkinter库中有很多GUI控件,主要包括图形化界面中常用的按钮、标签、文本框、菜单、单选框、复选框等,接下来将介绍使用按钮控件的方法。当使用按钮控件tkinter.Button时,通过向它传递属性参数可以控制按钮的属性,例如可以设置按钮上文本的颜色、按钮的颜色、按钮的大小以及按钮的状态等。在 Tkinter库的按钮控件中,常用的属性控制参数如下表所示。

参数名功能
anchor指定按钮上文本的位置
background (bg)指定按钮的背景色
bitmap指定按钮上显示的位图
borderwidth (bd)指定按钮边框的宽度
command指定按钮消息的回调函数
cursor指定鼠标移动到按钮上的指针样式
font指定按钮上文本的字体
foreground (fg)指定按钮的前景色
height指定按钮的高度
image指定按钮上显示的图片
state指定按钮的状态
text指定按钮上显示的文本
width指定按钮的宽度

  请看下面的实例,功能是是使用tkinter向窗体中添加按钮控件的过程 。

import tkinter #导入tkinter模块
root = tkinter.Tk() #生成一个主窗口对象
button1 = tkinter.Button(root, #创建按钮1
    anchor = 'center',#设置文本的对齐方式
    text = '江南赴艽野', #设置按钮上显示的文本
    width = 30, #设置按钮的宽度
    height = 5) #设置按钮的高度
button1.pack() #将按钮添加到窗口中
button2 = tkinter.Button(root, #创建按钮2
    text = '收藏', #设置按钮上显示的文本
    bg = 'red') #设置按钮的背景色
button2.pack() #将按钮添加到窗口中
button3 = tkinter.Button(root, #创建按钮3
    text = '阅读文章', #设置按钮上显示的文本
    width = 15, #设置按钮的宽度
    height = 2,) #设置按钮的高度
button3.pack() #将按钮添加到窗口中
button4 = tkinter.Button(root, #创建按钮4
    text = '关注', #设置按钮上显示的文本
    width = 30, #设置按钮的宽度
    height = 5, #设置按钮的高度
    state = tkinter.DISABLED) #设置按钮为禁用的
button4.pack() #将按钮添加到窗口中
root.mainloop() #进入消息循环

  上述实例代码使用不同的属性参数实例化了4个按钮,并分别将这4个按钮添加到了主窗口中。执行后会在主程序窗口中显示出4种不同的按钮,执行效果如下图所示。
在这里插入图片描述

三、使用文本框控件

  在Tkinter库的控件中,文本框控件主要用来实现信息接收和用户的信息输入功能。在 Python 程序中,使用tkinter.Entry与tkinter.Text可以创建单行文本框和多行文本框组件。通过向文本框控件传递属性参数可以设置文本框的背景色、大小、状态等。例如下表所示了tkinter.Entry和tkinter.Text所共有的几个属性控制参数。

参数名功能
background (bg)指定文本框的背景色
borderwidth (bd)指定文本框边框的宽度
font指定文本框中文字的字体
foreground (fg)指定文本框的前景色
selectbackground指定选定文本的背景色
selectforeground指定选定文本的前景色
show指定文本框中显示的字符,如果是星号,则表示文本框为密码框
state指定文本框的状态
width指定文本框的宽度

  下列代码演示了使用Tkinter在窗体中使用文本框控件的过程。

import tkinter #导入Tkinter模块
root = tkinter.Tk() #生成一个主窗口对象
entry1 = tkinter.Entry(root, #创建单行文本框1
show = '*',) #设置显示的文本是星号
entry1.pack() #将文本框添加到窗口中
entry2 = tkinter.Entry(root, #创建单行文本框2
show = '#', #设置显示的文本是井号
width = 50) #设置文本框的宽度
entry2.pack() #将文本框添加到窗口中
entry3 = tkinter.Entry(root, #创建单行文本框3
bg = 'red', #设置文本框的背景色
fg = 'blue') #设置文本框的前景色
entry3.pack() #将文本框添加到窗口中
entry4 = tkinter.Entry(root, #创建单行文本框4
selectbackground = 'red', #设置选中文本的背景色
selectforeground = 'gray') #设置选中文本的前景色
entry4.pack() #将文本框添加到窗口中
entry5 = tkinter.Entry(root, #创建单行文本框5
state = tkinter.DISABLED) #禁用文本框
entry5.pack() #将文本框添加到窗口中
edit1 = tkinter.Text(root, #创建多行文本框
selectbackground = 'red', #设置选中文本的背景色
selectforeground = 'gray')
edit1.pack() #将文本框添加到窗口中
root.mainloop() #进入消息循环

  上述实例代码使用不同的属性参数实例化了6种文本框,执行后的效果如下图所示。
在这里插入图片描述

四、使用菜单控件

  在Tkinter库的控件中,使用菜单控件的方式与使用其他控件的方式有所不同。在创建菜单控件时,需要使用创建主窗口的config()方法将菜单添加到窗口中。例如下面的代码演示了使用Tkinter在窗体中使用菜单控件的过程。

import tkinter
root = tkinter.Tk()
menu = tkinter.Menu(root)
submenu = tkinter.Menu(menu, tearoff=0)
submenu.add_command(label="打开")
submenu.add_command(label="保存")
submenu.add_command(label="关闭")
menu.add_cascade(label="文件", menu=submenu)
submenu = tkinter.Menu(menu, tearoff=0)
submenu.add_command(label="复制")
submenu.add_command(label="粘贴")
submenu.add_separator()
submenu.add_command(label="剪切")
menu.add_cascade(label="编辑", menu=submenu)
submenu = tkinter.Menu(menu, tearoff=0)
submenu.add_command(label="关于")
menu.add_cascade(label="帮助", menu=submenu)
root.config(menu=menu)
root.mainloop()

  在上述实例代码中,在主窗口中加入了3个主菜单,而在每个主菜单下又创建了对应的子菜单。其中在主窗口中显示了3个主菜单(文件、编辑、帮助),而在“文件”主菜单下设置了3个子菜单(打开、保存、关闭)。在第二个菜单“编辑”中,通过代码“submenu.add_separator()”添加了一条分割线。执行代码后的效果如下图所示。

在这里插入图片描述

五、使用标签控件

  在Python程序中,标签控件的功能是在窗口中显示文本或图片。在Tkinter库的控件中,使用tkinter.Label可以创建标签控件。标签控件常用的属性参数如下表所示。

参数名功能
anchor指定标签中文本的位置
background (bg)指定标签的背景色
borderwidth (bd)指定标签的边框宽度
bitmap指定标签中的位图
font指定标签中文本的字体
foreground (fg)指定标签的前景色
height指定标签的高度
image指定标签中的图片
justify指定标签中多行文本的对齐方式
text指定标签中的文本,可以使用“\n”表示换行
width指定标签的宽度

  下列代码演示了使用Tkinter在窗体中创建标签的过程。

import tkinter #导入tkinter模块
root = tkinter.Tk() #生成一个主窗口对象
label1 = tkinter.Label(root, #创建标签1
anchor = 'center', #设置标签文本的位置
bg = 'red', #设置标签的背景色
fg = 'blue', #设置标签的前景色
text = 'Python', #设置标签中显示的文本
width = 40, #设置标签的宽度
height = 5) #设置标签的高度
label1.pack() #将标签添加到主窗口中
label2 = tkinter.Label(root, #创建标签2
text = 'Python\n与数据库', #设置标签中显示的文本
justify = tkinter.LEFT, #设置多行文本左对齐
width = 40, #设置标签的宽度
height = 5) #设置标签的高度
label2.pack() #将标签添加到主窗口中
label3 = tkinter.Label(root, #创建标签3
text = 'Python\n与爬虫', #设置标签中显示的文本
justify = tkinter.RIGHT, #设置多行文本右对齐
width = 40, #设置标签的宽度
height = 5) #设置标签的高度
label3.pack() #将标签添加到主窗口中
label4 = tkinter.Label(root, #创建标签4
text = 'Python\n与游戏开发', #设置标签中显示的文本
justify = tkinter.CENTER, #设置多行文本居中对齐
width = 40, #设置标签的宽度
height = 5) #设置标签的高度
label4.pack() #将标签添加到主窗口中
root.mainloop() #进入消息循环

  在上述实例代码中,在主窗口中创建了4个类型的标签,执行代码后的效果如下图所示:
在这里插入图片描述

六、使用单选按钮和复选框控件

  在Python程序中,在一组单选按钮中只有一个选项被选中,而在复选框中可以同时选择多个选项。在Tkinter库的控件中,使用tkinter.Radiobutton与tkinter.Checkbutton可以分别创建单选按钮和复选框。通过向它传递属性参数的方式可以单独设置单选按钮和复选框的背景色、大小、状态等。单选按钮和复选框控件常用的属性控制参数如下表所示。

参数功能
anchor设置文本位置
background (bg)设置背景色
borderwidth (bd)设置边框的宽度
bitmap设置组件中的位图
font设置组件中文本的字体
foreground (fg)设置组件的前景色
height设置组件的高度
image设置组件中的图片
justify设置组件中多行文本的对齐方式
text设置组件中的文本,可以使用“\n”表示换行
value设置组件被选中后关联变量的值
variable设置组件所关联的变量
width设置组件的宽度

  在Python程序中,variable是单选按钮和复选框控件中比较重要的属性参数,需要使用tkinter.IntVar或tkinter.StringVar生成通过variable指定的变量。其中tkinter.IntVar可以生成一个整型变量,而tkinter.StringVar可以生成一个字符串变量。当使用tkinter.IntVar或者tkinter.StringVar生成变量后,可以使用set()方法设置变量的初始值。如果这个初始值与组件的value所指定的值相同,则这个组件处于被选中状态。如果其他组件被选中,则变量值将被修改为这个组件value所指定的值。

  下列代码演示了在Tkinter窗体中创建单选按钮和复选框的过程。

import tkinter #导入tkinter模块
root = tkinter.Tk() #生成一个主窗口对象
r = tkinter.StringVar() #生成字符串变量
r.set('1') #初始化变量值
radio = tkinter.Radiobutton(root, #创建单选按钮1
variable = r, #单选按钮关联的变量
value = '1', #设置选中单选按钮时的变量值
text = '单选按钮1') #设置单选按钮的显示文本
radio.pack() #将单选按钮1添加到窗口中
radio = tkinter.Radiobutton(root, #创建单选按钮2
variable = r, #单选按钮关联的变量
value = '2', #设置选中单选按钮时的变量值
text = '单选按钮2' ) #设置单选按钮的显示文本
radio.pack() #将单选按钮2添加到窗口中
radio = tkinter.Radiobutton(root, #创建单选按钮3
variable = r, #单选按钮关联的变量
value = '3', #设置选中单选按钮时的变量值
text = '单选按钮3' ) #设置单选按钮的显示文本
radio.pack() #将单选按钮3添加到窗口中
radio = tkinter.Radiobutton(root, #创建单选按钮4
variable = r, #单选按钮关联的变量
value = '4', #设置选中单选按钮时的变量值
text = '单选按钮4' ) #设置单选按钮的显示文本
radio.pack() #将单选按钮4添加到窗口中
c = tkinter.IntVar() #生成整型变量
c.set(1) #变量初始化
check = tkinter.Checkbutton(root, #创建复选按钮
text = '复选按钮', #设置复选按钮的显示文本
variable = c, #复选按钮关联的变量
onvalue = 1, #设置选中复选按钮时的变量值1
offvalue = 2) #设置未选中复选按钮时的变量值2
check.pack() #将复选按钮添加到窗口中
root.mainloop() #进入消息循环
print(r.get()) #调用函数get()输出r
print(c.get()) #调用函数get()输出c

  在上述实例代码中,在主窗口中分别创建了一个包含4个选项的单选按钮和一个复选框,其中使用函数StringVar()生成字符串变量,并将生成的字符串用于单选按钮组件。使用函数IntVar()生成整型变量,并将生成的变量用于复选框。执行文件danfu.py后的效果如下图所示。
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值