赞
踩
推荐搭配python基础芝士食用更佳。本篇主要介绍的12种基础控件的部分方法,包括但不局限于控件的创建、字体设置、颜色设置,大小。另,在示例程序中,为实现同一效果,会利用不同的方法,如(["text"]="xxx" 和 config(text="xxx")),在这里不会过度赘述,只是为了让读者了解。因篇幅有限,控件的布局、生僻用法、高级用法、ttk拓展等会再下一篇中详细论述。因时间问题,可能存在参数错字等问题,建议使用代码中的参数写法,本文中所有代码已在Python 3.8.10中运行检查完毕,如果发现任何问题,请告知于我,不甚感谢。在本片中所有代码存在两份,一份是在代码框中的,另一份是直接贴上去的,这主要是为了方便读者复制研究。关于测试代码使用的编辑器是我自己写的,因为最近在优化框架代码比价乱导致语法高亮部分有一点故障,所以看起来怪怪的,请勿介意。因篇幅较长,特提供目录供读者快速翻阅,请耐心食用。(文中部分图片来源于网络)
2022.7.9晚21:20
目录
9.7 检查指定索引选项是否被选取(selelction_includes)
方法:
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(父对象,参数……)
- 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(父对象,参数……)
- 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限定单行文字,如果所输入的字符长度大于文本框的宽度就会自动隐藏,但可以移动鼠标光标查看,需要输入多行文字,请使用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=什么的时候,输入框就只显示什么。
在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()
在Entry中有delete函数可以清除目前Entry的字符串内容(指定位置或全部内容)。
因为文本框只有一行,所以他的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()
清除前:
清除后:
清除指定范围的索引范围为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()
清除前:
清除后:
可以看见,前三个字“如果所”被删除了
在一些时候你会见到含有默认文字的文本框,在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(父对象,参数……)
示例:
- 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(父对象,参数……)
示例:
- 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 | 当无法操作时的颜色 |
(图片来源于网络)
容器控件可以理解为框架,在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(父对象,参数……)
示例:
- 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(父对象,参数……)
示例:
- 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()
选中前:
选中后:
向列表框添加选项的方法是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()
添加前:
添加后:
使用的方法是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()
该方法可以设置列表框的默认选项值,使用方法为:
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()
使用方法: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()
使用方法: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)
传回已选中的选项索引,如果超过一个,则使用元组返回
示例:
- 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()
如果指定索引选项被选中则返回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(父对象,参数……,*选项值)
示例:
- 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()
选中前:
选中后:
这是基于你使用变量绑定的方式,通过设置变量来达到默认选项的功能
示例:
- 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()
该方法是基于变量绑定,通过获取变量当前值来完成的
示例:
- 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(父对象,参数……)。
简单示例:
- 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 | 增加菜单列表的分割线 |
(图片来源于网络)
示例:
- 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通常用来实现多行文本的编辑功能,可以视为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()
使用格式: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是指在文本末尾,即使你再文本框中添加的文字,也是在末尾。
如图:
在前文已经提到了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”即第一行第三个字符
使用方法: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()
(图片来源于网络)
(图片来源于网络)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。