Tkinter 是使用 python 进行窗口视窗设计的模块。
Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。
mainloop方法最后执行,将标签显示在屏幕,进入等待状态(注:若组件未打包,则不会在窗口中显示),准备响应用户发起的GUI事件。
# 引入tkinter
import tkinter
# 实例化tkinter对象,创建主窗口
window = tkinter.Tk()
# 设置窗口的标题
window.title("简单实例")
# 设置窗口的大小和窗口的起始位置 window.geometry("宽度x高度+距离屏幕左边缘距离+距离屏幕上边缘距离")
window.geometry("400x200+100+20")
# 将标签显示在屏幕,进入等待状态,准备响应用户发起的GUI事件。
window.mainloop()
控件(部件) | 说明 |
---|---|
Button | 用于显示应用程序中的按钮 |
Canvas | 用于在应用程序中绘制线条,椭圆,多边形和矩形等形状 |
Checkbutton | 用于显示多个选项作为复选框 |
Entry | 用于显示单行文本字段 / 用于接受来自用户的值 |
Frame | 用作容器小部件来组织其他小部件 |
Label | 用于为其他小部件提供单行标题(可含图像) |
Listbox | 用于选项列表 |
Menubutton | 用于显示应用程序中的菜单 |
Menu | 用于向用户提供各种命令 (这些命令包含在Menubutton中) |
Message | 用于显示多行文本字段(以接受用户的值) |
Radiobutton | 用于将多个选项显示为单选按钮 |
Scale | 用于提供滑块小部件 |
Scrollbar | 用于向各种小部件(例如列表框)添加滚动功能 |
Text | 用于以多行显示文本 |
Toplevel | 用于提供单独的窗口容器 |
import tkinter
window = tkinter.Tk()
window.geometry("400x400+200+200")
window.title("Label控件")
# 标签控件 label 显示文本
# tkinter.Label(窗口,显示的文本,背景,字体颜色,字体样式,
'''
label = tkinter.Label(
window,
text="显示的文本",
bg="pink",
fg="blue",
font=("黑体",20),
width=10,
height=10,
wraplength=50,
justify="left",
anchor="center"
)
# 将控件显示出来
label.pack()
window.mainloop()
选项 | 含义 |
---|---|
activebackground | 1. 设置当 Label 处于活动状态(通过 state 选项设置状态)的背景色 2. 默认值由系统指定 |
activeforeground | 1. 设置当 Label 处于活动状态(通过 state 选项设置状态)的前景色 2. 默认值由系统指定 |
anchor | 1. 控制文本(或图像)在 Label 中显示的位置 2. “n”, “ne”, “e”, “se”, “s”, “sw”, “w”, “nw”, 或者 “center” 来定位(ewsn 代表东西南北,上北下南左西右东) 3. 默认值是 “center” |
background | 1. 设置背景颜色 2. 默认值由系统指定 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Label 上的位图 2. 如果指定了 image 选项,则该选项被忽略 |
borderwidth | 1. 指定 Label 的边框宽度 2. 默认值由系统指定,通常是 1 或 2 像素 |
bd | 跟 borderwidth 一样 |
compound | 1. 控制 Label 中文本和图像的混合模式 2. 默认情况下,如果有指定位图或图片,则不显示文本 3. 如果该选项设置为 “center”,文本显示在图像上(文本重叠图像) 4. 如果该选项设置为 “bottom”,“left”,“right” 或 “top”,那么图像显示在文本的旁边(如 “bottom”,则图像在文本的下方) 5. 默认值是 NONE |
cursor | 1. 指定当鼠标在 Label 上飘过的时候的鼠标样式 2. 默认值由系统指定 |
disabledforeground | 1. 指定当 Label 不可用的时候前景色的颜色 2. 默认值由系统指定 |
font | 1. 指定 Label 中文本的字体(注:如果同时设置字体和大小,应该用元组包起来,如(“楷体”, 20) 2. 一个 Label 只能设置一种字体 3. 默认值由系统指定 |
foreground | 1. 设置 Label 的文本和位图的颜色 2. 默认值由系统指定 |
fg | 跟 foreground 一样 |
height | 1. 设置 Label 的高度 2. 如果 Label 显示的是文本,那么单位是文本单元 3. 如果 Label 显示的是图像,那么单位是像素(或屏幕单元) 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Label 的内容计算出高度 |
highlightbackground | 1. 指定当 Label 没有获得焦点的时候高亮边框的颜色 2. 默认值由系统指定,通常是标准背景颜色 |
highlightcolor | 1. 指定当 Label 获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度 2. 默认值是 0(不带高亮边框) |
image | 1. 指定 Label 显示的图片 2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象 3. 该选项优先于 text 和 bitmap 选项 |
justify | 1. 定义如何对齐多行文本 2. 使用 “left”,“right” 或 “center” 3. 注意,文本的位置取决于 anchor 选项 4. 默认值是 “center” |
padx | 1. 指定 Label 水平方向上的额外间距(内容和边框间) 2. 单位是像素 |
pady | 1. 指定 Label 垂直方向上的额外间距(内容和边框间) 2. 单位是像素 |
relief | 1. 指定边框样式 2. 默认值是 “flat” 3. 另外你还可以设置 “groove”, “raised”, “ridge”, “solid” 或者 “sunken” |
state | 1. 指定 Label 的状态 2. 这个标签控制 Label 如何显示 3. 默认值是 "normal 4. 另外你还可以设置 “active” 或 “disabled” |
takefocus | 1. 如果是 True,该 Label 接受输入焦点 2. 默认值是 False |
text | 1. 指定 Label 显示的文本 2. 文本可以包含换行符 3. 如果设置了 bitmap 或 image 选项,该选项则被忽略 |
textvariable | 1. Label 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 2. 如果变量被修改,Label 的文本会自动更新 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 2. 默认值是 -1 3. 例如设置为 1,则说明在 Button 的第 2 个字符处画下划线 |
width | 1. 设置 Label 的宽度 2. 如果 Label 显示的是文本,那么单位是文本单元 3. 如果 Label 显示的是图像,那么单位是像素(或屏幕单元) 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Label 的内容计算出宽度 |
wraplength | 1. 决定 Label 的文本应该被分成多少行 2. 该选项指定每行的长度,单位是屏幕单元 3. 默认值是 0 |
import tkinter
def function1():
print("在窗口打印:调取function1()")
window = tkinter.Tk()
window.title("简单实例")
window.geometry("400x200+100+20")
strButton1="按钮1"
button1 = tkinter.Button(window,text=strButton1,command=function1,width=5,height=5)
button1.pack()
# 还可以是匿名函数
button2 = tkinter.Button(window,text="按钮2",command=lambda : print("lambda函数的调取"))
button2.pack()
button3 = tkinter.Button(window,text="按钮3",command=window.quit)
button3.pack()
window.mainloop()
选项 | 含义 |
---|---|
activebackground | 1. 设置当 Button 处于活动状态(通过 state 选项设置状态)的背景色 2. 默认值由系统指定 |
activeforeground | 1. 设置当 Button 处于活动状态(通过 state 选项设置状态)的前景色 2. 默认值由系统指定 |
anchor | 1. 控制文本(或图像)在 Button 中显示的位置2. “n”, “ne”, “e”, “se”, “s”, “sw”, “w”, “nw”, 或者 “center” 来定位(ewsn 代表东西南北,上北下南左西右东) 3. 默认值是 “center” |
background | 1. 设置背景颜色 2. 默认值由系统指定 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Button 上的位图 2. 如果指定了 image 选项,则该选项被忽略 |
borderwidth | 1. 指定 Button 的边框宽度 2. 默认值由系统指定,通常是 1 或 2 像素 |
bd | 跟 borderwidth 一样 |
compound | 1. 控制 Button 中文本和图像的混合模式 2. 默认情况下,如果有指定位图或图片,则不显示文本3. 如果该选项设置为 “center”,文本显示在图像上(文本重叠图像) 4. 如果该选项设置为 “bottom”,“left”,“right” 或 “top”,那么图像显示在文本的旁边(如 “bottom”,则图像在文本的下方) 5. 默认值是 NONE |
cursor | 1. 指定当鼠标在 Button 上飘过的时候的鼠标样式 2. 默认值由系统指定 |
default | 1. 如果设置该选项(“normal”),该按钮会被绘制成默认按钮 2. Tkinter 会根据平台的具体指标来绘制(通常就是绘制一个额外的边框) 2. 默认值是 “disable” |
disabledforeground | 1. 指定当 Button 不可用的时候前景色的颜色 2. 默认值由系统指定 |
font | 1. 指定 Button 中文本的字体 2. 一个 Button 只能设置一种字体 3. 默认值由系统指定 |
foreground | 1. 设置 Button 的文本和位图的颜色 2. 默认值由系统指定 |
fg | 跟 foreground 一样 |
height | 1. 设置 Button 的高度 2. 如果 Button 显示的是文本,那么单位是文本单元 3. 如果 Button 显示的是图像,那么单位是像素(或屏幕单元) 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Button 的内容计算出高度 |
highlightbackground | 1. 指定当 Button 没有获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightcolor | 1. 指定当 Button 获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度 2. 默认值是 0(不带高亮边框) |
image | 1. 指定 Button 显示的图片 2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象 3. 该选项优先于 text 和 bitmap 选项 |
justify | 1. 定义如何对齐多行文本2. 使用 “left”,“right” 或 “center” 3. 注意,文本的位置取决于 anchor 选项 4. 默认值是 “center” |
overrelief | 1. 定义当鼠标飘过时 Button 的样式 2. 如果不设置,那么总是使用 relief 选项指定的样式 |
padx | 指定 Button 水平方向上的额外间距(内容和边框间) |
pady | 指定 Button 垂直方向上的额外间距(内容和边框间) |
relief | 1. 指定边框样式 2. 通常当按钮被按下时是 “sunken”,其他时候是 “raised” 3. 另外你还可以设置 “groove”、“ridge” 或 “flat” 4. 默认值是 “raised” |
repeatdelay | 见下方 repeatinterval 选项的描述 |
repeatinterval | 1. 通常当用户鼠标按下按钮并释放的时候系统认为是一次点击动作。如果你希望当用户持续按下按钮的时候(没有松开),根据一定的间隔多次触发按钮,那么你可以设置这个选项。 2. 当用户持续按下按钮的时候,经过 repeatdelay 时间后,每 repeatinterval 间隔就触发一次按钮事件。 3. 例如设置 repeatdelay=1000,repeatinterval=300,则当用户持续按下按钮,在 1 秒的延迟后开始每 300 毫秒触发一次按钮事件,直到用户释放鼠标。 |
state | 1. 指定 Button 的状态 2. 默认值是 “normal” 3. 另外你还可以设置 “active” 或 “disabled” |
takefocus | 1. 指定使用 Tab 键可以将焦点移到该 Button 组件上(这样按下空格键也相当于触发按钮事件) 2. 默认是开启的,可以将该选项设置为 False 避免焦点在此 Button 上 |
text | 1. 指定 Button 显示的文本 2. 文本可以包含换行符 3. 如果设置了 bitmap 或 image 选项,该选项则被忽略 |
textvariable | 1. Button 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 2. 如果变量被修改,Button 的文本会自动更新 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 2. 默认值是 -1 3. 例如设置为 1,则说明在 Button 的第 2 个字符处画下划线 |
width | 1. 设置 Button 的宽度 2. 如果 Button 显示的是文本,那么单位是文本单元 3. 如果 Button 显示的是图像,那么单位是像素(或屏幕单元) 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Button 的内容计算出宽度 |
wraplength | 1. 决定 Button 的文本应该被分成多少行 2. 该选项指定每行的长度,单位是屏幕单元 3. 默认值是 0 |
# 引入tkinter
import tkinter
window = tkinter.Tk()
window.title("Entry控件")
window.geometry("400x200+100+20")
# entry 输入控件:用于输入简单的文本内容
entry = tkinter.Entry(window)
entry.pack()
# 输入密码的时候,需要隐藏显示的内容
entry2 = tkinter.Entry(window,show="*")
entry2.pack()
# 给输入框设值取值
entryVar = tkinter.Variable()
entry3 = tkinter.Entry(window,textvariable=entryVar)
entry3.pack()
# entryVar此事代表输入框这个对象
entryVar.set("输入框中实现设置值")
# 提取输入框的值
print("entry3输入框中的值:",entryVar.get())
print("entry3输入框中的值",entry3.get())
window.mainloop()
# 引入tkinter
import tkinter
def showMethod():
# 提取输入框的值
print("点击按钮后,entry3输入框中的值:", entryVar.get())
window = tkinter.Tk()
window.title("按钮输出输入")
window.geometry("400x200+100+20")
# 给输入框设值取值
entryVar = tkinter.Variable()
entry3 = tkinter.Entry(window,textvariable=entryVar)
entry3.pack()
strButton1="按钮1"
button1 = tkinter.Button(window,text=strButton1,command=showMethod)
button1.pack()
# entryVar此事代表输入框这个对象
entryVar.set("输入框中实现设置值")
# 提取输入框的值
print("entry3输入框中的值:",entryVar.get())
window.mainloop()
import tkinter
window = tkinter.Tk()
window.title("text控件")
window.geometry("400x200+100+20")
# Text 文本控件,用于显示文本内容(大量的文本显示) height=显示的行数
text = tkinter.Text(window,width=30,height=5)
text.pack()
# 文本框中显示的大量的文本内容
strVar = "Text 组件用于显示文本文档,包含纯文本或格式化文本(使用不同字体,嵌入图片,显示链接,甚至是带 CSS 格式的 HTML 等)。因此,它常常也被用于作为简单的文本编辑器和网页浏览器使用。"
# 在文本框中插入字符串内容
text.insert(tkinter.INSERT,strVar)
window.mainloop()
import tkinter
window = tkinter.Tk()
window.title("滚动条文本框")
window.geometry("100x100+100+20")
# Text 文本控件,用于显示文本内容(大量的文本显示) height=显示的行数
text2 = tkinter.Text(window,width=30,height=5)
#创建滚动条
scrillberV = tkinter.Scrollbar()
# 显示滚动条 side=显示靠那一侧,fill=填充Y轴
scrillberV.pack(side=tkinter.RIGHT,fill=tkinter.Y)
# 设置使用滚动条的文本框 side=显示靠那一侧,fill=填充Y轴
text2.pack(side=tkinter.LEFT,fill=tkinter.Y)
# 实现滚动条和文本框关联
scrillberV.config(command=text2.yview)
text2.config(yscrollcommand=scrillberV.set)
# 文本框中显示的大量的文本内容
strVar = "Text 组件用于显示文本文档,包含纯文本或格式化文本(使用不同字体,嵌入图片,显示链接,甚至是带 CSS 格式的 HTML 等)。因此,它常常也被用于作为简单的文本编辑器和网页浏览器使用。"
# 在文本框中插入字符串内容
text2.insert(tkinter.INSERT,strVar)
window.mainloop()
import tkinter
window = tkinter.Tk()
window.title("CheckButton多选框控件")
window.geometry("400x200+100+20")
# 方法funMethod
def funMethod():
message=""
# 若hobby1被选中
if hobby1.get()==True:
message+="money\n"
# 若hobby2被选中
if hobby2.get()==True:
message+="power\n"
# 若hobby3被选中
if hobby3.get() == True:
message += "ability\n"
# 清楚所有的内容 text.delete(情况开始的行数.情况开始的列数,tkinter.END情况到最后)
text.delete(0.0,tkinter.END)
# 插入新的内容
text.insert(tkinter.INSERT,message)
# 绑定变量,用于获取选取的
hobby1 = tkinter.BooleanVar()
hobby2 = tkinter.BooleanVar()
hobby3 = tkinter.BooleanVar()
# 创建一个复选框
checkButton1 = tkinter.Checkbutton(window,text="money",variable=hobby1,command=funMethod)
checkButton2 = tkinter.Checkbutton(window,text="power",variable=hobby2,command=funMethod)
checkButton3 = tkinter.Checkbutton(window,text="ability",variable=hobby3,command=funMethod)
checkButton1.pack()
checkButton2.pack()
checkButton3.pack()
# 显示选中的复选框
# Text 文本控件,用于显示文本内容(大量的文本显示) height=显示的行数
text = tkinter.Text(window,width=30,height=5)
text.pack()
window.mainloop()
# 引入tkinter
import tkinter
window = tkinter.Tk()
window.title("RadioButton单选框控件")
window.geometry("400x200+100+20")
# 点击之后获取点击书籍
def funMethod():
print(rString.get())
# 设置绑定变量的变量
rString = tkinter.IntVar()
# 创建单选框对象 绑定变量产参数:
# ** 因为希望将两个设为一组,所以两个绑定一个变量 **
# value=0 默认选中
radioButton1 = tkinter.Radiobutton(window,text="男",value=1,variable=rString,command=funMethod)
radioButton2 = tkinter.Radiobutton(window,text="女",value=0,variable=rString,command=funMethod)
# 使得单选框显示
radioButton1.pack()
radioButton2.pack()
window.mainloop()