python3之Tkinter快速食用手册——控件基础篇

        推荐搭配python基础芝士食用更佳。本篇主要介绍的12种基础控件的部分方法,包括但不局限于控件的创建、字体设置、颜色设置,大小。另,在示例程序中,为实现同一效果,会利用不同的方法,如(["text"]="xxx"config(text="xxx")),在这里不会过度赘述,只是为了让读者了解。因篇幅有限,控件的布局、生僻用法、高级用法、ttk拓展等会再下一篇中详细论述。因时间问题,可能存在参数错字等问题,建议使用代码中的参数写法,本文中所有代码已在Python 3.8.10中运行检查完毕,如果发现任何问题,请告知于我,不甚感谢。在本片中所有代码存在两份,一份是在代码框中的,另一份是直接贴上去的,这主要是为了方便读者复制研究。关于测试代码使用的编辑器是我自己写的,因为最近在优化框架代码比价乱导致语法高亮部分有一点故障,所以看起来怪怪的,请勿介意。因篇幅较长,特提供目录供读者快速翻阅,请耐心食用。(文中部分图片来源于网络)

2022.7.9晚21:20

目录

一、建立窗口

 二、标签(Label)

 三、按钮(Button)

四、文本框(Entry)

4.2 Entry的获取(get)

 4.3 Entry的清除(delete)

4.3.1 清除全部内容

 4.3.2 清除部分内容

4.4 Entry的文字插入(insert)

 五、选项按钮(Radiobutton)

六、复选框(checkbutton)

七、容器控件(Frame)

八、标签框架(LabelFrame)

 九、列表框(Listbox)

 9.1 建立列表框项目(insert)

 9.2 获取列表项目数量(size)

​编辑

 9.3 列表框的默认选项(selelction_set)

 9.4  删除列表框的选项(delete)

 9.5 传回指定索引项目(get)

9.6 传回所选取的项目的索引(curselection)

9.7 检查指定索引选项是否被选取(selelction_includes)

 十、下拉式列表框(OptionMenu)

 10.1 建立默认选项(set)

 10.2 获取选项内容(get)

十一、菜单栏(Menu)

11.1 含有下拉式列表的菜单

 十二、多行文本框(Text)

 12.1 插入文字(insert)

 12.2 获取文字(get)

12.3 获取光标当前位置(index(INSERT))


一、建立窗口

方法:

root = Tk()        # root是自定义的Tk对象名称,可以是其他

root.mainloop()        # 这一行需要放在程序的最后,让程序持续执行

 与窗口有关的方法:

方法说明
title()设置窗口的标题
geometry("长x宽+x轴边距+y轴边距")设置窗口大小和位置,x是小写字母,单位是像素pixel
maxsize(宽,高)设置窗口拖拽时最大宽与高
mindize(宽,高)设置窗口拖拽时最小宽与高
configure(bg="color”)

设置窗口背景颜色

resizable(True,True)设置窗口是否可以改变大小,第一个参数是宽,第二个参数是高,如果要固定窗口大小可以使用resizeable(0,0)
state(“zoomed”)最大化窗口
iconify()最小化窗口
iconbitmap("xx.ico")设置窗口图标

 获取屏幕的高度和宽度方法:

 root.winfo_screenwidth()
 root.winfo_screenheight()

import tkinter as tk

def B1():
    w = root.winfo_screenwidth()
    h = root.winfo_screenheight()
    print(f"长为{w},高为{h}")

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
root.geometry("500x300+200+300")	#设置窗口大小为500x300,位置在(200,300)的地方
root.configure(bg="yellow")	# 设置窗口背景颜色
b1 = tk.Button(root,text="输出高与宽",command=B1)
b1.pack()
root.mainloop()

import tkinter as tk

def B1():
            w = root.winfo_screenwidth()
            h = root.winfo_screenheight()
            print(f"长为{w},高为{h}")

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
root.geometry("500x300+200+300")    #设置窗口大小为500x300,位置在(200,300)的地方
root.configure(bg="yellow")    # 设置窗口背景颜色
b1 = tk.Button(root,text="输出高与宽",command=B1)
b1.pack()
root.mainloop()

 

 放松一下(图片来源于网络)

 

 二、标签(Label)

创建方法:

label(父对象,参数……)

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l1 = tk.Label(root,text="若在许我少年时,一两黄金一两风。").pack()
root.mainloop()

import tkinter as tk
root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l1 = tk.Label(root,text="若在许我少年时,一两黄金一两风。").pack()
root.mainloop()

常用参数:

参数说明
bg/background背景颜色
bitmap使用默认的图标当做内容
borderwidth/bd标签宽度,默认为1
compound标签内文字与图像的位置关系
cursor鼠标在标签上方的形状
fg/foreground前景色
font字体样式、字体颜色、大小
height标签高度,单位是字符
justify

最后一行文字的对齐方式

LEFT/CENTER/TIGHT(靠左/居中/靠右)

padx/pady标签与文字的距离,即内边距
text标签文字
textvariable以变量形式呈现
underline设置文字下划线从0算起默认为-1
wraplength文本到达多少像素后换行
width

示例:

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l1 = tk.Label(root,
	text="若在许我少年时,一两黄金一两风。",	# 标签内的文字
	bg="green",fg="blue",	# 标签的背景颜色和前景颜色
	font=("黑体",24),	# 标签的字体、大小
	height=2,width=30,	# 标签的高度和长度
	padx=20,pady=10,	# x轴和y轴的内边距
	underline=6,	 # 下滑线,第七个字符
	).pack()
root.mainloop()

import tkinter as tk
root = tk.Tk()
root.title("开向幼儿园的车")    
#设置标题
l1 = tk.Label(root,
            text="若在许我少年时,一两黄金一两风。",    
# 标签内的文字
            bg="green",fg="blue",    # 标签的背景颜色和前景颜色
            font=("黑体",24),    # 标签的字体、大小
            height=2,width=30,    # 标签的高度和长度
            padx=20,pady=10,    # x轴和y轴的内边距
            underline=6,     # 下滑线,第七个字符
            ).pack()
root.mainloop()

 

 (图片来源于网络)

 

 三、按钮(Button)

创建方法:

Button(父对象,参数……)

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
b1 = tk.Button(root,text="这是一个按钮").pack()
root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
b1 = tk.Button(root,text="这是一个按钮").pack()
root.mainloop()

常用参数:

属性/参数说明
borderwidth/bd按钮的边界宽度,默认是两个像素
bg/background背景颜色
command按钮被单击时触发的事件
cursor鼠标移至按钮上方是的形状
fg/foreground前景色
font字形
height高,单位是字符
highlightbackground

 当按钮取得焦点时的背景颜色

highlightcolor当按钮取得焦点时的颜色
image按钮上的图片
justify最后一行文字的对齐方式
padx/pady内边距
relief默认是FLAT,控制文字外框
state设置按钮是否可用,默认是state=NORMAL,若设置为DISABLED则以灰阶显示功能按钮,无法使用
text按钮上的文字
underline文字下划线
width宽,单位是字符宽
wraplength限制每一行的字符宽度,默认是0,表示只有“\n”才会换行

示例:

import tkinter as tk

def B1():
    b1["bg"] = "#ff80c0"
    b1["fg"] = "#ff8000"
    print(b1["bg"],b1["fg"])

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

b1 = tk.Button(root,text="这是一个按钮",	# 按钮上的文字 
		bg="khaki",fg="lime",	#	设置背景颜色和前景颜色 
		font=("黑体",24),	# 设置字体和大小
		height=2,width=20,	# 设置宽度和高度
		padx=10,pady=20,		# 设置x轴和y轴的内边距
		command=B1	# 当按钮被单击时调用B1函数 
		)
b1.pack()	# 显示按钮 
root.mainloop()

import tkinter as tk

def B1():
            b1["bg"] = "#ff80c0"
            b1["fg"] = "#ff8000"
            print(b1["bg"],b1["fg"])

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题

b1 = tk.Button(root,text="这是一个按钮",    # 按钮上的文字
                bg="khaki",fg="lime",    #    设置背景颜色和前景颜色
                font=("黑体",24),    # 设置字体和大小
                height=2,width=20,    # 设置宽度和高度
                padx=10,pady=20,        # 设置x轴和y轴的内边距
                command=B1    # 当按钮被单击时调用B1函数
                )
b1.pack()    # 显示按钮
root.mainloop()

单击按钮前:

 单击按钮后:

 

(图片来源于网络) 

 

四、文本框(Entry)

Entry是指单行输入框,通常用在登录界面中输入用户名和密码,注意:Entry限定单行文字,如果所输入的字符长度大于文本框的宽度就会自动隐藏,但可以移动鼠标光标查看,需要输入多行文字,请使用Text控件。

创建方法:

Entry(父对象,参数……)

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
e1 = tk.Entry(root)
e1.pack()

root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
e1 = tk.Entry(root)
e1.pack()

root.mainloop()

 常用参数:

属性/参数说明
bg/background背景颜色
borderwidth/bd边界宽度,默认是2像素
command当用户更改内容时,触发事件
cursor当鼠标在控件上方时的光标形状
exportselection如果执行选取时,所选取的字符串自动输出至剪贴板,如果想避免,可以设置为0
fg/foreground前景色
font字形,大小
height高,单位是字符
highlightbackground当文本框取得焦点时的背景颜色
highlightcolor当文本框取得焦点时的颜色
justify最后一行的对齐方式
relief默认是=FLAT,可由此控制文字外框
selectbackground被选取的字符串的背景颜色
selectfroeground被选取的字符串的前景颜色
show显示输入字符,如果使用show=“*”则表示显示星号,常用于输入密码字段
state输入状态,默认是NORMAL,如果改写成DISABLE则无法输入
width宽,单位是字符宽
textvariable字符变量

示例:

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
		font=("黑体",20),
		width=30,
		selectbackground="red",
		)
e1.pack()

root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
        font=("黑体",20),
        width=30,
        selectbackground="red",
        )
e1.pack()

root.mainloop()

 添加show="*"后:

 当show=什么的时候,输入框就只显示什么。

4.2 Entry的获取(get)

在Entry中有get函数可以获取目前Entry的字符串内容。

示例:

import tkinter as tk
def B1():
    s = e1.get()
    l1.configure(text=s)

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
		font=("黑体",20),
		width=30,
		selectbackground="red",    # 当有文字被选中时,选中的文字的背景色为红色
		)
e1.pack()
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="获取文本框文字",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
        s = e1.get()
        l1.configure(text=s)

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
        font=("黑体",20),
        width=30,
        selectbackground="red",   
     # 当有文字被选中时,选中的文字的背景色为红色
        )
e1.pack()
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="获取文本框文字",command=B1)
b1.pack()

root.mainloop()

 4.3 Entry的清除(delete)

在Entry中有delete函数可以清除目前Entry的字符串内容(指定位置或全部内容)。

4.3.1 清除全部内容

因为文本框只有一行,所以他的index1(索引起始位置)是从0开始的,这一点与Text的索引不同,Text的索引是从“1.0”开始的,请注意,这里一个是数值型,一个是字符型(加引号的)。而Entry清除全部内容的索引范围是从0到END(文本末尾)。

示例:

import tkinter as tk
def B1():
    e1.delete(0,tk.END)

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
		font=("黑体",20),
		width=30,
		selectbackground="red",
		)
e1.pack()
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="获取文本框文字",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
    e1.delete(0,tk.END)

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
        font=("黑体",20),
        width=30,
        selectbackground="red",
        )
e1.pack()
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="获取文本框文字",command=B1)
b1.pack()

root.mainloop()

清除前:

 清除后:

 4.3.2 清除部分内容

清除指定范围的索引范围为index1到index2,例如:delete(0,3)指的是删除索引在0到3之间的所有内容即清除下标为0,1,2的字符,和在python中的列表的查询方式一样。

示例:

import tkinter as tk
def B1():
    e1.delete(0,3)

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
		font=("黑体",20),
		width=59,
		selectbackground="red",
		)
e1.pack()
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="获取文本框文字",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
        e1.delete(0,3)

root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
        font=("黑体",20),
        width=59,
        selectbackground="red",
        )
e1.pack()
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="获取文本框文字",command=B1)
b1.pack()

root.mainloop()

清除前:

 清除后:

 可以看见,前三个字“如果所”被删除了

4.4 Entry的文字插入(insert)

在一些时候你会见到含有默认文字的文本框,在Entry中你可以使用insert方法来插入默认字符,使用语法:

insert(index,text)        # index:插入的位置;text:插入的内容

其中的index通常为0,即在起始位置插入字符

示例:

import tkinter as tk
def B1():
    e1.delete(0,tk.END)

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
		font=("黑体",20),
		width=59,
		selectbackground="red",
		)
e1.pack()
e1.insert(0,"人生当如蜡烛一样,从头燃烧到尾,始终光明。")
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="文本框操作",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
        e1.delete(0,tk.END)

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
e1 = tk.Entry(root,bg="gold",fg="linen",
        font=("黑体",20),
        width=59,
        selectbackground="red",
        )
e1.pack()
e1.insert(0,"人生当如蜡烛一样,从头燃烧到尾,始终光明。")
l1 = tk.Label(root,text="")
l1.pack()
b1 = tk.Button(root,text="文本框操作",command=B1)
b1.pack()

root.mainloop()

 

 

(图片来源于网络)

(图片来源于网络) 

 

 五、选项按钮(Radiobutton)

选项按钮和复选框类似,但有所区别,选项按钮在多个选项中只能选择一个,而复选框可以选择多个选项。

创建方法:

Radiobutton(父对象,参数……)

示例:

import tkinter as tk
def printtext():
    if var.get() == 1:    # 获取变量的值进行判断
    	l1["text"] = "千里征途我伴你一程,从此风雪艳阳我不在过问。"
    else:
        l1["text"] = "当你看不到未来的时候,只需要努力就好了,时间会给你答案。"
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

var = tk.IntVar()    # 选项按钮绑定的变量
var.set(1)            # 默认选项为1

l1 = tk.Label(root,text="None")
l1.pack()

# 选项1
ri1 = tk.Radiobutton(root,text="千里征途我伴你一程,从此风雪艳阳我不在过问。",
			variable=var,    # 绑定变量
			value=1,command=printtext)    # 设置控件值为1
ri1.pack()

# 选项2
ri2 = tk.Radiobutton(root,text="当你看不到未来的时候,只需要努力就好了,时间会给你答案。",
			variable=var,
			value=2,command=printtext)    # 设置控件值为2
ri2.pack()

root.mainloop()

import tkinter as tk
def printtext():
         if var.get() == 1:    # 获取变量的值进行判断
                l1["text"] = "千里征途我伴你一程,从此风雪艳阳我不在过问。"
         else:
                l1["text"] = "当你看不到未来的时候,只需要努力就好了,时间会给你答案。"
        
root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题

var = tk.IntVar()    # 选项按钮绑定的变量
var.set(1)            # 默认选项为1

l1 = tk.Label(root,text="None")
l1.pack()

# 选项1
ri1 = tk.Radiobutton(root,text="千里征途我伴你一程,从此风雪艳阳我不在过问。",
        variable=var,    # 绑定变量
        value=1,command=printtext) 
   # 设置控件值为1
ri1.pack()

# 选项2
ri2 = tk.Radiobutton(root,text="当你看不到未来的时候,只需要努力就好了,时间会给你答案。",
        variable=var,
        value=2,command=printtext)  
  # 设置控件值为2
ri2.pack()

root.mainloop()

选择前:

 选择后:

 部分常用参数:

参数/属性说明
activebackground鼠标光标在选项按钮上时的背景颜色
activeforeground鼠标光标在选项按钮上时的前景颜色
anchor如果控件大于所需时,控制选项按钮的位置,默认是CENTER(居中)
bg标签背景或indicator的背景颜色
bitmap位图图像对象
borderwidth/bd边界宽度,默认是2个像素
command当用户更改选项时触发事件
cursor当鼠标光标在选项按钮上时的光标形状
fg文字前景色
font字形,大小
height高,默认是1行
highlightbackground当选项按钮取得焦点时的背景颜色
highlightcolor当选项按钮取得焦点时的颜色
image图像对象,如果要建立含图像的选项按钮时使用
indicatoron此值为0时,可以建立盒子按钮
justify最后一行文字的对齐方式
padx/pady内边距
state设置控件是否可用,默认是state=NORMAL,若设置为DISABLE则以灰阶的形式显示,并且无法使用
text控件显示的文字
textvariable以变量的方式显示文字
underline设置下划线,从0开始,默认是-1
value选项的值,用来区分所选取的选项按钮
variable设置获取的目前选取的单选按钮,,他的值类型通常为IntVar或StringVar
width设置选项按钮的文字有几个字符宽度
wraplenght限制每一行的文字数量,默认是0

 

 (图片来源于网络)

 

六、复选框(checkbutton)

创建方法:

Checkbutton(父对象,参数……)

示例:

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

def Ri1():
    l1["text"] = "123"

l1 = tk.Label(root,text="None")
l1.pack()

var1 = tk.IntVar() 
ri1 = tk.Checkbutton(root,text="123",
			variable=var1,		# 绑定变量var1 
			bg="blue",	 # 设置背景颜色为蓝色 
			command=Ri1)	# 设置触发事件为Ri1 
ri1.pack()

var2 = tk.IntVar()
ri2 = tk.Checkbutton(root,text="456",
			variable=var2,
			selectcolor="red",	# 复选框的颜色 
			font=("楷体",20))	# 设置字体和大小 
ri2.pack()

var3 = tk.IntVar()
ri3 = tk.Checkbutton(root,text="789",
			variable=var3,)
ri3.pack()

root.mainloop()

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")  
 #设置标题

def Ri1():
    l1["text"] = "123"


l1 = tk.Label(root,text="None")
l1.pack()

var1 = tk.IntVar()
ri1 = tk.Checkbutton(root,text="123",
            variable=var1, 
       # 绑定变量var1
            bg="blue",     # 设置背景颜色为蓝色
            command=Ri1)    # 设置触发事件为Ri1
ri1.pack()

var2 = tk.IntVar()
ri2 = tk.Checkbutton(root,text="456",
            variable=var2,
            selectcolor="red", 
   # 复选框的颜色
            font=("楷体",20))    # 设置字体和大小
ri2.pack()

var3 = tk.IntVar()
ri3 = tk.Checkbutton(root,text="789",
            variable=var3,)
ri3.pack()

root.mainloop()

 部分属性方法同选项按钮相同

参数/属性说明
offvalue这是控制变量,默认若复选框未选取值是0,可以由此更改设置该值
onvaue这是控制变量,默认若复选框未选取值是1,可以由此更改设置该值
disabledforeground当无法操作时的颜色

 

(图片来源于网络) 

 

七、容器控件(Frame)

容器控件可以理解为框架,在tkinter中还有labelFrame(标签框架),作用是产生一个分离的窗口容器,可以将它想象成一个口袋,在一个口袋里可以放置多个口袋,一旦移动任意一个口袋,该口袋内的所用物品一并移动。

创建方式:

Frame(父对象,参数……)

示例:

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
f1 = tk.Frame(root,bg="red",height=100,width=300)	
# 设置背景颜色为红色,高度为100像素,宽度为300像素 
f1.pack()

f2 = tk.Frame(root,bg="pink",height=100,width=300)
# pink粉色 
f2.pack()

root.mainloop()

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
f1 = tk.Frame(root,bg="red",height=100,width=300)    
# 设置背景颜色为红色,高度为100像素,宽度为300像素
f1.pack()

f2 = tk.Frame(root,bg="pink",height=100,width=300)
# pink粉色
f2.pack()

root.mainloop()

 常用部分参数:

参数/属性说明
bg/background背景颜色
borderwidth/bd边框宽度,默认2像素
cursor当鼠标在控件上时的光标形状
height高度,单位像素
highlightbackground当框架没有取得焦点时的颜色
highlightcolor当框架取得焦点时的颜色
highlightthickness当框架取得焦点时的厚度
relief默认是FLAT,由此可控制框架外框
width宽度,单位像素

 

(图片来源于网络) 

 

八、标签框架(LabelFrame)

创建方法:

LabelFrame(父对象,参数……)

示例:

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
f1 = tk.LabelFrame(root,bg="green",text="这是一个标签框架",height=100,width=200)
			# 背景颜色为绿色,标签内容为"这是一个标签框架",高为100,宽为200 
f1.pack()

root.mainloop()

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
f1 = tk.LabelFrame(root,bg="green",text="这是一个标签框架",height=100,width=200)
            # 背景颜色为绿色,标签内容为"这是一个标签框架",高为100,宽为200
f1.pack()

root.mainloop()

部分常用参数与Frame的用法相同

用法不同的参数:

参数/属性说明
labelanchor放置标签的位置
text标签的内容

示例:

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
f1 = tk.LabelFrame(root,bg="green",text="这是一个标签框架",height=100,width=200)
			# 背景颜色为绿色,标签内容为"这是一个标签框架",高为100,宽为200 
f1.pack()

f2 = tk.LabelFrame(root,bg="ivory",text="这是也一个标签框架",
			height=100,width=200,labelanchor=tk.S)
			# 设置标签显示的位置在下方 
f2.pack()
root.mainloop()

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")    
#设置标题
f1 = tk.LabelFrame(root,bg="green",text="这是一个标签框架",height=100,width=200)
            # 背景颜色为绿色,标签内容为"这是一个标签框架",高为100,宽为200
f1.pack()

f2 = tk.LabelFrame(root,bg="ivory",text="这是也一个标签框架",
            height=100,width=200,labelanchor=tk.S)

            # 设置标签显示的位置在下方
f2.pack()
root.mainloop()

 在anchor在参数中,可以使用方位来进行快速放置,这个在我之前的谋篇博客中有提到,建议感兴趣的可以去翻阅一下。方位图示意:

 

 (图片来源于网络)

 九、列表框(Listbox)

创建方法:

Listbox(父对象,参数……)

示例:

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
li = tk.Listbox(root,bg="blue")    # 创建列表框,并且设置背景颜色为蓝色
li.pack()
root.mainloop()

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
li = tk.Listbox(root,bg="blue")    # 创建列表框,并且设置背景颜色为蓝色
li.pack()
root.mainloop()

 部分常用参数:

参数/属性说明
bg/background背景颜色
bd/borderwidth边框宽度
cursor鼠标在控件上时的光标形状
fg/froeground前景色
font字体,大小
height
highlightcolor列表框获取焦点时的颜色
highlightthickness列表框获取焦点时的厚度
listvariable以变量的方式处理选项结果
relief默认是FLAT,由此可控制列表外框
selectbackground被选取的字符串的背景颜色
selectmode

由此可以决定多少选项可以被选中,以及鼠标拖拽如何影响选项:

BROWSE,默认值,可以选择一个选项,如果拖拽选项会造成选项最后的位置是被选取的项目位置

SINGLE,只能选取一个值,可以用单击方式进行,不可使用拖拽方式更改所选项目

MULTIPLE,可以选则多个项目,单击项目可以切换是否选择该项目

EXTENDED,单击第一个项目然后拖拽到最后一个项目,即可以选取这个区间内的一系列选项,单击第一个项目,按住Shift键并单击另一个项目,可以选取区间项目

width
xscrollcommand

在 x轴使用滚动条

yscrollcommand在y轴使用滚动条

示例:

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"梦想")
li.insert(0,"生活")
li.pack()

root.mainloop()

import tkinter as tk
        
root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"梦想")
li.insert(0,"生活")
li.pack() 

root.mainloop()

 选中前:

 选中后:

 9.1 建立列表框项目(insert)

向列表框添加选项的方法是insert(位置,添加内容),此处的位置为行数(从0开始计算),即在第几行添加。

示例:

import tkinter as tk
def li_insert():
	li.insert(0,"萎靡不振")

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"卑躬屈膝")
li.insert(1,"一鼓作气")
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    li.insert(0,"萎靡不振")

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"卑躬屈膝")
li.insert(1,"一鼓作气")
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

添加前:

 添加后:

 9.2 获取列表项目数量(size)

使用的方法是size()

示例:

import tkinter as tk
def li_insert():
	li.insert(0,"萎靡不振")
	l.configure(text=f"列表框的项目数量是:{li.size()}")

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"卑躬屈膝")
li.insert(1,"一鼓作气")
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

 

import tkinter as tk
def li_insert():
    li.insert(0,"萎靡不振")
    l.configure(text=f"列表框的项目数量是:{li.size()}")

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"卑躬屈膝")
li.insert(1,"一鼓作气")
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

 9.3 列表框的默认选项(selelction_set)

该方法可以设置列表框的默认选项值,使用方法为:

selection_set(index1,*index2)      

第二个参数是选填的,如果只填写第一个参数,则选中一个选项,如果填写两个参数,则选中区间内的所有选项

示例:(不连续)

import tkinter as tk
def li_insert():
	l.configure(text=f"列表框的项目数量是:{li.size()}")


root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.selection_set(2)	# 默认选择下标为2的选项,即第三行 
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l.configure(text=f"列表框的项目数量是:{li.size()}")


root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.selection_set(2) 
   # 默认选择下标为2的选项,即第三行
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

 (连续)

import tkinter as tk
def li_insert():
	l.configure(text=f"列表框的项目数量是:{li.size()}")


root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.selection_set(1,3)	# 默认选择下标为1到下标为3的所有选项,即第二行到第四行 
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l.configure(text=f"列表框的项目数量是:{li.size()}")


root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.selection_set(1,3) 
   # 默认选择下标为1到下标为3的所有选项,即第二行到第四行
li.pack()

b1 = tk.Button(root,text="向列表框添加项目",command=li_insert)
b1.pack()

root.mainloop()

 9.4  删除列表框的选项(delete)

使用方法:delete(index1,*index2)

第二个参数是选填的,如果只填写第一个参数,则删除第一个位置的选项,如果填写两个参数,则删除区间内的所有选项

示例:(不连续)

import tkinter as tk
def li_insert():
	li.delete(0)		# 删除下标为0的选项,即第一行内容 
	l["text"] = "删除了第一个选项"

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="删除列表框项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    li.delete(0)
        # 删除下标为0的选项,即第一行内容
    l["text"] = "删除了第一个选项"

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="删除列表框项目",command=li_insert)
b1.pack()

root.mainloop()

 连续

import tkinter as tk
def li_insert():
	l["text"] = f"删除了{li.get(0)},{li.get(1)},{li.get(2)}"
	li.delete(0,2)		# 删除下标为0到下标为2之间的所有选项,即第一行到第三行 

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="删除列表框项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l["text"] = f"删除了{li.get(0)},{li.get(1)},{li.get(2)}"
    li.delete(0,2)  
     # 删除下标为0到下标为2之间的所有选项,即第一行到第三行

root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="删除列表框项目",command=li_insert)
b1.pack()

root.mainloop()

 9.5 传回指定索引项目(get)

使用方法:get(index1,*index2)

第二个参数是选填的,如果只填写第一个参数,则传回第一个位置的选项,如果填写两个参数,则传回区间内的所有选项

示例:(不连续)

import tkinter as tk
def li_insert():
    l["text"] = f"传回的选项为:{li.get(0)}"    # 获取列表框中第一行的选项值
	

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l["text"] = f"传回的选项为:{li.get(0)}" 
   # 获取列表框中第一行的选项值
    

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

 (连续)

import tkinter as tk
def li_insert():
    l["text"] = f"传回的选项为:{li.get(0,2)},类型为:{type(li.get(0,2))}"
    # 获取列表框中第一行到第三行的值和返回类型 
	

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green")
		# 设置选项被选中后背景颜色为绿色 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l["text"] = f"传回的选项为:{li.get(0,2)},类型为:{type(li.get(0,2))}"

    # 获取列表框中第一行到第三行的值和返回类型
    

root = tk.Tk()
root.title("开向幼儿园的车")  
 #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green")

        # 设置选项被选中后背景颜色为绿色
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

 注意:这里的返回多个选项方式是元组(tuple)

9.6 传回所选取的项目的索引(curselection)

传回已选中的选项索引,如果超过一个,则使用元组返回

示例:

import tkinter as tk
def li_insert():
    l["text"] = "已选中"
    indexs = li.curselection()
    for i in indexs:
        l["text"] += f"第{i}个选项,"
	

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green",selectmode=tk.MULTIPLE)
		# 设置选项被选中后背景颜色为绿色并且设置可以多选 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l["text"] = "已选中"
    indexs = li.curselection()
    for i in indexs:
        l["text"] += f"第{i}个选项,"
    

root = tk.Tk()
root.title("开向幼儿园的车")  
 #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green",selectmode=tk.MULTIPLE)

        # 设置选项被选中后背景颜色为绿色并且设置可以多选
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

9.7 检查指定索引选项是否被选取(selelction_includes)

如果指定索引选项被选中则返回True,否则返回False

示例:

import tkinter as tk
def li_insert():
    l["text"] = f"第一个选项是否选中:{li.selection_includes(0)}\n"
    l["text"] += f"第二个选项是否选中:{li.selection_includes(1)}"

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
		selectbackground="green",selectmode=tk.MULTIPLE)
		# 设置选项被选中后背景颜色为绿色并且设置可以多选 
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

import tkinter as tk
def li_insert():
    l["text"] = f"第一个选项是否选中:{li.selection_includes(0)}\n"
    l["text"] += f"第二个选项是否选中:{li.selection_includes(1)}"

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None")
l.pack()
li = tk.Listbox(root,bg="blue",fg="red",font=("微软雅黑",18),
        selectbackground="green",selectmode=tk.MULTIPLE)

        # 设置选项被选中后背景颜色为绿色并且设置可以多选
li.insert(0,"王勃")
li.insert(1,"杨炯")
li.insert(2,"卢照邻")
li.insert(3,"骆宾王")
li.pack()

b1 = tk.Button(root,text="获取列表框项目",command=li_insert)
b1.pack()

root.mainloop()

 

(图片来源于网络)

 

(图片来源于网络)

 

(图片来源于网络) 

 

 十、下拉式列表框(OptionMenu) 

创建方法:

OptionMenu(父对象,参数……,*选项值)

示例:

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="填空题:出奇__胜")
l.pack()
var = tk.StringVar(root)
# 创建一个变量用来获取用户选择结果 
op = tk.OptionMenu(root,var,"之","至","制")
# 绑定变量和选项 
op.pack()
root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="填空题:出奇__胜")
l.pack()
var = tk.StringVar(root)

# 创建一个变量用来获取用户选择结果
op = tk.OptionMenu(root,var,"之","至","制")
# 绑定变量和选项
op.pack()
root.mainloop()

 选中前:

 选中后:

 10.1 建立默认选项(set)

这是基于你使用变量绑定的方式,通过设置变量来达到默认选项的功能

示例:

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="填空题:出奇__胜")
l.pack()
var = tk.StringVar(root)
var.set("制")
# 创建一个变量用来获取用户选择结果,并设置默认为"制"
op = tk.OptionMenu(root,var,"之","至","制")
# 绑定变量和选项 
op.pack()
root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="填空题:出奇__胜")
l.pack()
var = tk.StringVar(root)
var.set("制")

# 创建一个变量用来获取用户选择结果,并设置默认为"制"
op = tk.OptionMenu(root,var,"之","至","制")
# 绑定变量和选项
op.pack()
root.mainloop()

 10.2 获取选项内容(get)

该方法是基于变量绑定,通过获取变量当前值来完成的

示例:

import tkinter as tk

def B1():
    l.configure(text=f"出奇{var.get()}胜")
    # 获取变量var的值 

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="填空题:出奇__胜")
l.pack()
var = tk.StringVar(root)
var.set("制")
# 创建一个变量用来获取用户选择结果,并设置默认为"制"
op = tk.OptionMenu(root,var,"之","至","制")
# 绑定变量和选项 
op.pack()
b1 = tk.Button(root,text="确定",command=B1)
b1.pack()
root.mainloop()

import tkinter as tk

def B1():
    l.configure(text=f"出奇{var.get()}胜")

    # 获取变量var的值

root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题
l = tk.Label(root,text="填空题:出奇__胜")
l.pack()
var = tk.StringVar(root)
var.set("制")

# 创建一个变量用来获取用户选择结果,并设置默认为"制"
op = tk.OptionMenu(root,var,"之","至","制")
# 绑定变量和选项
op.pack()
b1 = tk.Button(root,text="确定",command=B1)
b1.pack()
root.mainloop()

确定前:

 确定后:

 

(图片来源于网络) 

 

十一、菜单栏(Menu)

菜单是一种下拉式窗体,建立菜单的方法是:Menu(父对象,参数……)

简单示例:

import tkinter as tk

def ONE():
    l.configure(text="One is meun")

def TWO():
    l.configure(text=f"Two is meun too")

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None",fg="blue")
l.pack()

Parent_object = tk.Menu(root)

Parent_object.add_command(label="One",command=ONE)
Parent_object.add_command(label="Two",command=TWO)
root.config(menu=Parent_object)

root.mainloop()

import tkinter as tk

def ONE():
    l.configure(text="One is meun")

def TWO():
    l.configure(text=f"Two is meun too")

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None",fg="blue")
l.pack()

Parent_object = tk.Menu(root)

Parent_object.add_command(label="One",command=ONE)
Parent_object.add_command(label="Two",command=TWO)
root.config(menu=Parent_object)

root.mainloop()

未操作时:

 单击One按钮后:

 部分常用参数:

参数/属性说明
activebackground当光标移至菜单列表上时的背景颜色
activeborderwidth当被鼠标选取时他的外边宽度,默认是1
activeforeground当光标移至菜单列表上时的前景颜色
bd所有菜单的外边宽度
bg菜单未被选取时的背景颜色
cursor当菜单分离时,鼠标在菜单上的外观
disbledforeground菜单是DISABLED的颜色
font字体,大小
fg菜单未被选取时的前景颜色
image菜单图标
tearoff菜单上的分割线,默认为True(显示)
add_cascade建立分层菜单,同时让此子功能列表与父菜单建立连接
add_command增加菜单了列表
add_separator增加菜单列表的分割线

 

(图片来源于网络) 

11.1 含有下拉式列表的菜单

示例:

import tkinter as tk

def ONE():
    l.configure(text="One is meun")

def TWO():
    l.configure(text=f"Two is meun too")

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None",fg="blue")
l.pack()

Parent_object = tk.Menu(root)	# 一级菜单 

Parent_object2 = tk.Menu(Parent_object)	# 二级菜单 注意父对象是一级菜单 

Parent_object.add_cascade(label="menu",menu=Parent_object2)	# 向一级菜单添加列表并绑定 

Parent_object2.add_command(label="One",command=ONE)
Parent_object2.add_command(label="Two",command=TWO)
root.config(menu=Parent_object)

root.mainloop()

import tkinter as tk

def ONE():
    l.configure(text="One is meun")

def TWO():
    l.configure(text=f"Two is meun too")

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None",fg="blue")
l.pack()

Parent_object = tk.Menu(root)    # 一级菜单

Parent_object2 = tk.Menu(Parent_object)    # 二级菜单 注意父对象是一级菜单

Parent_object.add_cascade(label="menu",menu=Parent_object2)    # 向一级菜单添加列表并绑定

Parent_object2.add_command(label="One",command=ONE)
Parent_object2.add_command(label="Two",command=TWO)
root.config(menu=Parent_object)

root.mainloop()

 注意:虚线的作用:当用户单击虚线的时候,会重新创建一个对话框,对话框中的内容就是该一级菜单下的子菜单选项

 取消虚线可以使用tearoff参数

示例:

import tkinter as tk

def ONE():
    l.configure(text="One is meun")

def TWO():
    l.configure(text=f"Two is meun too")

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题
l = tk.Label(root,text="None",fg="blue")
l.pack()

Parent_object = tk.Menu(root)	# 一级菜单 

Parent_object2 = tk.Menu(Parent_object,tearoff=False)	
# 二级菜单 注意父对象是一级菜单 ,取消虚线

Parent_object.add_cascade(label="menu",menu=Parent_object2)	
# 向一级菜单添加列表并绑定  

Parent_object2.add_command(label="One",command=ONE)
Parent_object2.add_command(label="Two",command=TWO)
root.config(menu=Parent_object)

root.mainloop()

import tkinter as tk

def ONE():
    l.configure(text="One is meun")

def TWO():
    l.configure(text=f"Two is meun too")

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题
l = tk.Label(root,text="None",fg="blue")
l.pack()

Parent_object = tk.Menu(root)    # 一级菜单

Parent_object2 = tk.Menu(Parent_object,tearoff=False)    
# 二级菜单 注意父对象是一级菜单,取消虚线

Parent_object.add_cascade(label="menu",menu=Parent_object2)    
# 向一级菜单添加列表并绑定

Parent_object2.add_command(label="One",command=ONE)
Parent_object2.add_command(label="Two",command=TWO)
root.config(menu=Parent_object)

root.mainloop()

 

 (图片来源于网络)

 十二、多行文本框(Text)

Text通常用来实现多行文本的编辑功能,可以视为Entry的拓展和补充,可以实现多行的输入。

创建方法:Text(父对象,参数……)

简单示例:

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

t = tk.Text(root)
t.pack()

root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题

t = tk.Text(root)
t.pack()

root.mainloop()

 常用部分参数如下:

参数/属性说明
bg/background背景颜色
borderwidth/bd边界宽度,默认是2像素
cursor当光标在控件上时的形状
exportselection如果执行此操作,选取的字符串自动出入到剪贴板,避免可以设置为0
fg/foreground前景色
font字体,大小
height高,单位为行
insertbackground插入光标的颜色
padx/pady内边距
selectbackground被选取的字符的背景颜色
selectforeground被选取的字符的前景颜色
state控件是否可用NORMAL(可用)、DISABLED(不可用)
tab可设置按Tab键是,如何定位插入点
width宽,单位为字符宽度
wrap设置是否换行
xscrollcommand在x轴使用滚动条
yscrollcommand在y轴使用滚动条

示例:

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
		insertbackground="pink",height=15,width=50)
# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符 
t.pack() 

root.mainloop()

import tkinter as tk

root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
        insertbackground="pink",height=15,width=50)

# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符

t.pack()

root.mainloop()

 12.1 插入文字(insert)

使用格式:insert(index,text)# index(插入位置,插入内容)

示例:

import tkinter as tk
def B1():
    t.insert(tk.END,"夜阑卧听风吹雨,铁马冰河入梦来。")
    # 在文本最后插入 

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
		insertbackground="pink",height=15,width=50)
# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符 
t.pack() 
b1 = tk.Button(root,text="插入",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
    t.insert(tk.END,"夜阑卧听风吹雨,铁马冰河入梦来。")
    # 在文本最后插入

root = tk.Tk()
root.title("开向幼儿园的车")
    #设置标题

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
        insertbackground="pink",height=15,width=50)

# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符

t.pack()
b1 = tk.Button(root,text="插入",command=B1)
b1.pack()

root.mainloop()

 注意:END是指在文本末尾,即使你再文本框中添加的文字,也是在末尾。

如图:

 12.2 获取文字(get)

在前文已经提到了Entry的获取方式,Text与其类似但不完全相同

示例:

import tkinter as tk
def B1():
    l.config(text=t.get("1.0","1.5"))

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

l = tk.Label(root,text="None",fg="blue")
l.pack()

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
		insertbackground="pink",height=15,width=50)
# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符 
t.pack() 
b1 = tk.Button(root,text="获取",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
    l.config(text=t.get("1.0","1.5"))

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题

l = tk.Label(root,text="None",fg="blue")
l.pack()

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
        insertbackground="pink",height=15,width=50)

# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符

t.pack()
b1 = tk.Button(root,text="获取",command=B1)
b1.pack()

root.mainloop()

 注意:Text的索引值为字符型,期中以.点号)分割,左边是行数(从1开始计数),右边是列数(从0开始计数,如:“1.2”即第一行第三个字符

12.3 获取光标当前位置(index(INSERT))

使用方法:index(INSERT),返回在光标前的字符的下标,返回值为字符型

示例:

import tkinter as tk
def B1():
    l.config(text=t.index(tk.INSERT))

root = tk.Tk()
root.title("开向幼儿园的车")	#设置标题

l = tk.Label(root,text="None",fg="blue")
l.pack()

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
		insertbackground="pink",height=15,width=50)
# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符 
t.pack() 
b1 = tk.Button(root,text="获取",command=B1)
b1.pack()

root.mainloop()

import tkinter as tk
def B1():
    l.config(text=t.index(tk.INSERT))

root = tk.Tk()
root.title("开向幼儿园的车") 
   #设置标题

l = tk.Label(root,text="None",fg="blue")
l.pack()

t = tk.Text(root,bg="black",fg="white",font=("微软雅黑",10),
        insertbackground="pink",height=15,width=50)

# 设置背景颜色为黑色,前景颜色为白色,字体为微软雅黑,字号10磅,光标颜色为粉色,
# 高为15行,宽为50个字符

t.pack()
b1 = tk.Button(root,text="获取",command=B1)
b1.pack()

root.mainloop()

 

(图片来源于网络) 

(图片来源于网络) 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值