Tkinter主窗口 下表列出了窗口的常用方法,其中 window 代表主窗口对象:
函数
说明
title()
程序标题的名字
resizable()
是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable(0,0)或者resizable(False,False)时不可更改
geometry()
设定主窗口的大小以及位置,当参数值为 None 时表示获取窗口的大小和位置信息。
mainloop()
设置窗口主循环,使窗口循环显示(一直显示,指导窗口被关闭)
update()
刷新当前窗口
quit()
关闭当前窗口
iconbitmap()
设置窗口左上角的图标(图标是.ico文件类型)
config()
设置窗口的背景色为红色
minsize(50,50)
设置窗口被允许调整的最小范围,即宽和高各50
maxsize(400,400)
设置窗口被允许调整的最大范围,即宽和高各400
attributes(“-alpha”,0.5)
用来设置窗口的一些属性,比如透明度(-alpha)、是否置顶(-topmost)即将主屏置于其他图标之上、是否全屏(-fullscreen)全屏显示等
state(“normal”)
用来设置窗口的显示状态,参数值 normal(正常显示),icon(最小化),zoomed(最大化),
withdraw()
用来隐藏主窗口,但不会销毁窗口。
conify()
设置窗口最小化
deiconify()
将窗口从隐藏状态还原
winfo_screenwidth() winfo_screenheight()
获取电脑屏幕的分辨率(尺寸)
winfo_width() winfo_height()
获取窗口的大小,同样也适用于其他控件,但是使用前需要使用 window.update() 刷新屏幕,否则返回值为1
protocol(“协议名”,回调函数)
启用协议处理机制,常用协议有 WN_DELETE_WINDOW,当用户点击关闭窗口时,窗口不会关闭,而是触发回调函数。
觉得演示 1 2 3 4 5 6 7 8 9 10 11 import tkinter as tktop =tk.Tk() top.title('赵赛赛' ) top.mainloop()
设置住窗口大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) top.mainloop()
xx.geometry('450x400+300+200')
设置主窗口的宽度为 450,高度为 400,同时窗口距离左边屏幕的距离为 300(以像素为单位),距离屏幕顶部的距离为 200,这里我们将带“+”的参数值称为“位置参数
图标设置 windows设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.iconbitmap('C://Users//Machenike//Desktop//picture.ico' ) top.title('赵赛赛' ) top.mainloop()
linux设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import tkinter as tkfrom PIL.ImageTk import PhotoImagetop =tk.Tk() top.geometry('450x400+300+200' ) icon = PhotoImage(file="/home/zss/图片/tx.ico" ) top.tk.call('wm' , 'iconphoto' , top._w, icon) top.title('赵赛赛' ) top.mainloop()
添加前背景颜色 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.config(background ="red" ) top.title('赵赛赛' ) top.mainloop()
关闭窗口 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() button=tk.Button(layout1,text="关闭" ,command=top.quit) button.pack(side="bottom" ) top.mainloop()
messagebox提示框详解
三个消息框 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() result=messagebox.showinfo('提示' , '这是一个提示框' ) print("提示框" +str(result)) result=messagebox.showwarning('警告' , '这是一个警告框' ) print("警告框" +str(result)) result=messagebox.showerror('错误' , '这是一个错误框' ) print("错误框" +str(result))
返回值:
效果截图:
五个对话框 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() result=messagebox.askokcancel('是(Y) | 否(N)' , 'yes or no ?' ) print("询问确认对话框返回" +str(result)) result=messagebox.askyesno('是(Y) | 否(N)' , 'True or False ?' ) print("是/否对话框返回" +str(result)) result=messagebox.askokcancel('确定 | 取消' , 'True or False ?' ) print("确认/取消对话框返回" +str(result)) result=messagebox.askretrycancel('重试(R) | 取消' , 'True or False ?' ) print("重试/取消对话框返回" +str(result)) result=messagebox.askyesnocancel('是(Y) | 否(N) | 取消' , 'True or False or None' ) print("是/否/取消对话框返回" +str(result))
全部选择左边第一个返回值
1 2 3 4 5 询问确认对话框返回True 是/否对话框返回True 确认/取消对话框返回True 重试/取消对话框返回True 是/否/取消对话框返回True
效果截图:
Label标签控件 Label(标签)控件,是 Tkinter 中最常使用的一种控件,主要用来显示窗口中的文本或者图像,并且不同的 Lable(标签)允许设置各自不同的背景图片
下面对 Label(标签)的常用属性做简单介绍:
Label的属性
属性名称
说明
text
用来指定 Lable 显示的文本,注意文本内可以包含换行符
bg
用来设置背景色
bd
即 borderwidth 用来指定 Label 控件的边框宽度,单位为像素,默认为 2 个像素
bitmap
指定显示在 Label 控件上的位图,若指定了 image 参数,则该参数会被忽略
compound
控制 Lable 中文本和图像的混合模式,若选项设置为 CENTER,则文本显示在图像上,如果将选项设置为 BOTTOM、LEFT、RIGHT、TOP,则图像显示在文本旁边。
cursor
指定当鼠标在 Label 上掠过的时候,鼠标的的显示样式,参数值为 arrow、circle、cross、plus
disableforeground
指定当 Label 设置为不可用状态的时候前景色的颜色
font
指定 Lable 中文本的 (字体,大小,样式)元组参数格式,一个 Lable 只能设置一种字体
fg
设置 Label 的前景色
height/width
设置 Lable 的高度/宽度,如果 Lable 显示的是文本,那么单位是文本单元,如果 Label 显示的是图像,那么单位就是像素,如果不设置,Label 会自动根据内容来计算出标签的高度
highlightbackground
当 Label 没有获得焦点的时候高亮边框的颜色,系统的默认是标准背景色
highlightcolor
指定当 Lable 获得焦点的话时候高亮边框的颜色,系统默认为0,不带高亮边框
image
指定 Label 显示的图片,一般是 PhotoImage、BitmapImage 的对象
justify
表示多行文本的对齐方式,参数值为 left、right、center,注意文本的位置取决于 anchor 选项
padx/pady
padx 指定 Label 水平方向上的间距(即内容和边框间),pady 指定 Lable 水平方向上的间距(内容和边框间的距离)
relief
指定边框样式,默认值是 “flat”,其他参数值有 “groove”、”raised”、”ridge”、”solid”或者”sunken”
state
该参数用来指定 Lable 的状态,默认值为”normal”(正常状态),其他可选参数值有”active”和”disabled”
takefocus
默认值为False,如果是 True,表示该标签接受输入焦点
anchor
控制文本(或图像)在 Label 中显示的位置(方位),通过方位的英文字符串缩写(n、ne、e、se、s、sw、w、nw、center)实现定位,默认为居中(center)
underline
给指定的字符添加下划线,默认值为 -1 表示不添加,当设置为 1 时,表示给第二个文本字符添加下划线。
wraplength
将 Label 显示的文本分行,该参数指定了分行后每一行的长度,默认值为 0
text 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() Label_text=tk.Label(layout1,text="赵赛赛aaaa" , ) Label_text.pack() top.mainloop()
颜色和大小和字体设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() Label_text=tk.Label(layout1, text="赵赛赛aaaa" , width=10 , height=3 , bg="#7CCD7C" , font=('宋体' ,20 , 'bold italic' ) ) Label_text.pack() top.mainloop()
显示照片 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() img=tk.PhotoImage(file="/home/zss/图片/avatar.png" ) Label_img=tk.Label(layout1, image=img, width=1000 ) Label_img.pack() top.mainloop()
多行输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() Label_text=tk.Label(layout1, text="aaaa\n bbb\nccc\n ddd" , width=10 , height=5 , bg="#7CCD7C" , font=('宋体' ,10 , 'bold italic' ) ) Label_text.pack() top.mainloop()
我们直接在18行text里面\n
就换行了
左对齐右对齐 上面可以看见他是在中间我们可以用justify参数进行设置对齐
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import tkinter as tktop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() Label_text=tk.Label(layout1, text="aaaaaaaaaaaaaaaaa\n bbb\nccc\n ddd" , width=30 , height=5 , bg="#7CCD7C" , font=('宋体' ,10 , 'bold italic' ), justify='right' ) Label_text.pack() top.mainloop()
代码在23行
Button 控件是 Tkinter 中常用的窗口部件之一,同时也是实现程序与用户交互的主要控件。通过用户点击按钮的行为来执行回调函数,是 Button 控件的主要功用。首先自定义一个函数或者方法,然后将函数与按钮关联起来,最后,当用户按下这个按钮时,Tkinter 就会自动调用相关函数
Button 控件的常营属性如下所示:
属性
说明
anchor
控制文本所在的位置,默认为中心位置(CENTER)
activebackground
当鼠标放在按钮上时候,按妞的背景颜色
activeforeground
当鼠标放在按钮上时候,按钮的前景色
bd
按钮边框的大小,默认为 2 个像素
bg
按钮的背景色
command
用来执行按钮关联的回调函数。当按钮被点击时,执行该函数
fg
按钮的前景色
font
按钮文本的字体样样式
height
按钮的高度
highlightcolor
按钮控件高亮处要显示的颜色
image
按钮上要显示的图片
justify
按钮显示多行文本时,用来指定文本的对齐方式,参数值有 LEFT/RIGHT/CENTER
padx/pady
padx 指定 x 轴(水平方向)的间距大小,pady 则表示 y轴(垂直方向)的间距大小
ipadx/ipady
ipadx 指标签文字与标签容器之间的横向距离;ipady 则表示标签文字与标签容器之间的纵向距离
state
设置按钮的可用状态,可选参数有NORMAL/ACTIVE/DISABLED,默认为 NORMAL
text
按钮控件要显示的文本
照片和文本按钮 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x400+300+200' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): messagebox.showinfo('登录情况' , '登录成功' ,) button1 = tk.Button(layout1, text="登录" , command=callback) button1.pack() img=tk.PhotoImage(file="/home/zss/图片/dl.png" ) button2 = tk.Button(layout1, image=img, command=callback) button2.pack() top.mainloop()
结果:我设置了两个登录都是一样的只是一个照片一个文本
Entry接收输入控件 更详细可以去:http://c.biancheng.net/tkinter/entry-widget.html
Entry 控件是 Tkinter GUI 编程中的基础控件之一,它的作用就是允许用户输入内容,从而实现 GUI 程序与用户的交互,比如当用户登录软件时,输入用户名和密码,此时就需要使用 Entry 控件
Entry 控件除了具备一些共有属性之外,还有一些自身的特殊属性,如下表所示:
Entry的属性名称
属性名称
说明
exportselection
默认情况下,如果在输入框中选中文本会复制到粘贴板,如果要忽略这个功能,可以设置为 exportselection=0
selectbackground
选中文字时的背景颜色
selectforeground
选中文字时的前景色
show
指定文本框内容以何种样式的字符显示,比如密码可以将值设为 show=”*”
textvariable
输入框内值,也称动态字符串,使用 StringVar() 对象来设置,而 text 为静态字符串对象
xscrollcommand
设置输入框内容滚动条,当输入的内容大于输入框的宽度时使用户
常用方法 除了一些基本的属性之外,Entry 控件还提供了一些常用的方法,如下所示:
方法
说明
delete()
根据索引值删除输入框内的值
get()
获取输入框内的是
set()
设置输入框内的值
insert()
在指定的位置插入字符串
index()
返回指定的索引值
select_clear()
取消选中状态
select_adujst()
确保输入框中选中的范围包含 index 参数所指定的字符,选中指定索引和光标所在位置之前的字符
select_from (index)
设置一个新的选中范围,通过索引值 index 来设置
select_present()
返回输入框是否有处于选中状态的文本,如果有则返回 true,否则返回 false。
select_to()
选中指定索引与光标之间的所有值
select_range()
选中指定索引与光标之间的所有值,参数值为 start,end,要求 start 必须小于 end。
StringVar()动态数据类型 StringVar()就是我们在如何地方修改这个他都会变
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import tkinter as tkimport timetop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def gettime (): dstr.set(time.strftime("%H:%M:%S" )) layout1.after(1000 , gettime) dstr = tk.StringVar() lb = tk.Label(layout1,textvariable=dstr,fg='green' ,font=("微软雅黑" ,20 )) lb.pack() gettime() top.mainloop()
获取我们输入的内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): messagebox.showinfo('你输入的是' , dstr.get()) dstr = tk.StringVar() lb = tk.Entry(layout1,textvariable=dstr) lb.pack() button1 = tk.Button(layout1, text="登录" , command=callback) button1.pack() top.mainloop()
insert设置默认值 语法
1 insert(index,'字符') # 将字符插入到 index 指定的索引位置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): messagebox.showinfo('你输入的是' , dstr.get()) dstr = tk.StringVar() lb = tk.Entry(layout1,textvariable=dstr, width=30 ) lb.pack() lb.insert(0 ,'这个是默认值' ) button1 = tk.Button(layout1, text="登录" , command=callback) button1.pack() top.mainloop()
设置输入框的宽度 输入框不能设置高度,可以设置字体大小来设置高度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): messagebox.showinfo('你输入的是' , dstr.get()) dstr = tk.StringVar() lb = tk.Entry(layout1,textvariable=dstr, width=30 ) lb.pack() button1 = tk.Button(layout1, text="登录" , command=callback) button1.pack() top.mainloop()
delete清空输入框的内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): lb.delete(0 , tk.END) dstr = tk.StringVar() lb = tk.Entry(layout1,textvariable=dstr, width=30 ) lb.pack() lb.insert(0 ,'这个是默认值' ) button1 = tk.Button(layout1, text="点击删除框里面的内容" , command=callback) button1.pack() top.mainloop()
Entry控件验证功能 Entry 控件也提供了对输入内容的验证功能,比如要求输入英文字母,你却输入了数字,这就属于非法输入,Entry 控件通过以下参数实现对内容的校验:
参数
说明
validate
指定验证方式,字符串参数,参数值有 focus、focusin、focusout、key、all、none。
validatecommand
指定用户自定义的验证函数,该函数只能返回 True 或者 Fasle
invalidcommand
当 validatecommand 指定的验证函数返回 False 时,可以使用该参数值再指定一个验证函数。
下面对 validate 的参数值做简单的介绍:
参数值
说明
focus
当 Entry 组件获得或失去焦点的时候验证
focusin
当 Entry 组件获得焦点的时候验证
focuson
当 Entry 组件失去焦点的时候验证
key
当输入框被编辑的时候验证
all
当出现上边任何一种情况的时候验证
none
默认不启用验证功能,需要注意的是这里是字符串的 ‘none’
下面看一组具体的运行示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import tkinter as tkfrom tkinter import messageboxwin = tk.Tk() win.geometry('250x200+250+200' ) win.title("C语言中文网" ) win.iconbitmap('C:/Users/Administrator/Desktop/C语言中文网logo.ico' ) win.resizable(0 ,0 ) def check (): if entry1.get() == "C语言中文网" : messagebox.showinfo("输入正确" ) return True else : messagebox.showwarning("输入不正确" ) entry1.delete(0 ,tk.END) return False labe1 = tk.Label(win,text="账号:" ) labe2 = tk.Label(win,text="密码:" ) labe1.grid(row=0 ) labe2.grid(row=1 ) Dy_String = tk.StringVar() entry1 = tk.Entry(win,textvariable =Dy_String,validate ="focusout" ,validatecommand=check) entry2 = tk.Entry(win) entry1.grid(row=0 , column=1 ) entry2.grid(row=1 , column=1 ) win.mainloop()
运行结果如下:
图4:tkinter Entry控件
Spinbox 高级输入框 Spinbox 是 Entry 控件的升级版,它是 Tkinter 8.4 版本后新增的控件,该控件不仅允许用户直接输入内容,还支持用户使用微调选择器(即上下按钮调节器)来输入内容。在一般情况下,Spinbox 控件用于在固定的范围内选取一个值的时候使用。下面看一组简单的应用示
增加数字的方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): messagebox.showinfo('你输入的是' , dstr.get()) dstr = tk.StringVar() lb = tk.Spinbox(layout1,textvariable=dstr, width=30 , from_=0 , to=20 , increment=2 , bg='#9BCD9B' ) lb.pack() button1 = tk.Button(layout1, text="登录" , command=callback) button1.pack() top.mainloop()
使用 values 参数以元组的形式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import tkinter as tkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x150+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def callback (): messagebox.showinfo('你输入的是' , dstr.get()) dstr = tk.StringVar() lb = tk.Spinbox(layout1,textvariable=dstr, width=30 , values=('php' , 'jsp' , 'asp' ), increment=2 , bg='#9BCD9B' ) lb.pack() button1 = tk.Button(layout1, text="登录" , command=callback) button1.pack() top.mainloop()
Text文本框控件 详细查看:http://c.biancheng.net/tkinter/text-widget.html
视频教程:https://www.bilibili.com/video/BV1zE411g7LY?p=9
Text 文本控件是 Tkinter 中经常使用的控件,与 Entry 控件相比,Text 控件用于显示和编辑多行文本,而 Entry 控件则适合处理单行文本。
Text 控件类似 HTML 中的<textarea>
标签,允许用户以不同的样式、属性来显示和编辑文本,它可以包含纯文本或者格式化文本,同时支持嵌入图片、显示超链接以及带有 CSS 格式的 HTML 等。Text 控件的有很多的适用场景,比如显示某个产品的详细信息,或者人物介绍等。下面我们对 Text 控件属性和常用方法做简单的介绍。
Text的基本属性 除了基本的共有属性之外,Text 控件还具备以下属性:
属性
说明
autoseparators
默认为 True,表示执行撤销操作时是否自动插入一个“分隔符”(其作用是用于分隔操作记录)
exportselection
默认值为 True,表示被选中的文本是否可以被复制到剪切板,若是 False 则表示不允许。
insertbackground
设置插入光标的颜色,默认为 BLACK
insertborderwidth
设置插入光标的边框宽度,默认值为 0
insertofftime
该选项控制光标的闪烁频频率(灭的状态)
insertontime
该选项控制光标的闪烁频频率(亮的状态)
selectbackground
指定被选中文本的背景颜色,默认由系统决定
selectborderwidth
指定被选中文本的背景颜色,默认值是0
selectforeground
指定被选中文本的字体颜色,默认值由系统指定
setgrid
默认值是 False,指定一个布尔类型的值,确定是否启用网格控制
spacing1
指定 Text 控件文本块中每一行与上方的空白间隔,注意忽略自动换行,且默认值为 0。
spacing2
指定 Text 控件文本块中自动换行的各行间的空白间隔,忽略换行符,默认值为0
spacing3
指定 Text 组件文本中每一行与下方的空白间隔,忽略自动换行,默认值是 0
tabs
定制 Tag 所描述的文本块中 Tab 按键的功能,默认被定义为 8 个字符宽度,比如 tabs=(‘1c’, ‘2c’, ‘8c’) 表示前 3 个 Tab 宽度分别为 1厘米,2厘米,8厘米。
undo
该参数默认为 False,表示关闭 Text 控件的“撤销”功能,若为 True 则表示开启
wrap
该参数用来设置当一行文本的长度超过 width 选项设置的宽度时,是否自动换行,参数值 none(不自动换行)、char(按字符自动换行)、word(按单词自动换行)
xscrollcommand
该参数与 Scrollbar 相关联,表示沿水平方向上下滑动
yscrollcommand
该参数与 Scrollbar 相关联,表示沿垂直方向左右滑动
基本方法 Text 中的方法有几十个之多,这里不进行一一列举,主要对常用的方法进行介绍,如下表所示:
方法
说明
bbox(index)
返回指定索引的字符的边界框,返回值是一个 4 元组,格式为(x,y,width,height)
edit_modified()
该方法用于查询和设置 modified 标志(该标标志用于追踪 Text 组件的内容是否发生变化)
edit_redo()
“恢复”上一次的“撤销”操作,如果设置 undo 选项为 False,则该方法无效。
edit_separator()
插入一个“分隔符”到存放操作记录的栈中,用于表示已经完成一次完整的操作,如果设置 undo 选项为 False,则该方法无效。
get(index1, index2)
返回特定位置的字符,或者一个范围内的文字。
image_cget(index, option)
返回 index 参数指定的嵌入 image 对象的 option 选项的值,如果给定的位置没有嵌入 image 对象,则抛出 TclError 异常
image_create()
在 index 参数指定的位置嵌入一个 image 对象,该 image 对象必须是 Tkinter 的 PhotoImage 或 BitmapImage 实例。
insert(index, text)
在 index 参数指定的位置插入字符串,第一个参数也可以设置为 INSERT,表示在光标处插入,END 表示在末尾处插入。
delete(startindex [, endindex])
删除特定位置的字符,或者一个范围内的文字。
see(index)
如果指定索引位置的文字是可见的,则返回 True,否则返回 False。
文本控件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import tkinter as tkfrom tkinter import messageboxfrom tkinter import Texttop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() text = Text(layout1, width=50 , height=10 , undo=True , autoseparators=False ) text.pack() top.mainloop()
Index文本索引 Index 索引,用于指定字符在文本中的真实位置,这与我们经常使用 Python 索引是一样的,不过在 Text 文本控件中,两者之间的使用形式存在一些差异。
Tkinter 提供以下文本索引类型,如下表所示:
索引类型
说明
INSERT
对应插入光标的位置
CURRENT
对应与鼠标坐标最接近的位置
END
对应 Text 控件的文本域中最后一个字符的下一个位置
“line.column”
表示某一行某一列的一个位置,比如 1.2 表示第一行第二列的一个位置
“line.end”
表示某一行到末尾的最后一个位置
SEL
一种针对于 Tag 的特殊索引用法,(SEL_FIRST,SEL_LAST) 表示当前被选中的范围
演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import tkinter as tkfrom tkinter import Textfrom tkinter import INSERTtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() text = Text(layout1, width=20 , height=8 , undo=True , autoseparators=False ) text.pack() text.insert(INSERT,'aaaaaaaaaa' ) text.insert(1.3 ,'12' ) text.insert(1.7 ,'34' ) top.mainloop()
删除和恢复 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import tkinter as tkfrom tkinter import Textfrom tkinter import INSERTtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def backout (): text.edit_undo() def regain (): text.edit_redo() text = Text(layout1, width=20 , height=8 , undo=True , autoseparators=False ) text.pack() text.insert(INSERT,'这个是默认值这个是默\n认值这个是默认值这个是默认值这\n个是默认值这个是默认值这个是默认值' ) button1 = tk.Button(layout1, text="删除里面的全部内容" , command=backout) button1.pack() button1 = tk.Button(layout1, text="恢复里面的全部内容" , command=regain) button1.pack() top.mainloop()
Tag文本标签 Tag(标签)用来给一定范围内的文字起一个标签名,通过该标签名就能操控某一范围内的文字,比如修改文本的字体、尺寸和颜色。除此之外,该标签还可以和事件函数绑定在一起使用。
这里需要注意,Tags 的名字是由字符串组成的,但不能是空白字符串。
Tag 提供了一些常用的方法,通过这些方法可以操作 Tag(标签),常用方法如下:
方法
说明
tag_add(tagName,index1,index2)
为指定索引范围内的内容添加一个标签名字,如果 index2 不存在,则单独为 Index1 指定的内容添加 Tag
tag_bind(tagName, sequence, func, add=None)
为 Tag 绑定事件,解除绑定使用 tag_unbind() 方法
tag_cget(tagName,option)
返回 tagName 指定的 option 选项的值
tag_configure(tagName, cnf=None, **kw)
设置 tagName 的选项
tag_delete(tagNames)
删除单个或者多个 tagNames 指定的标签
tag_lower(tagName, belowThis=None)
降低 Tag 的优先级,如果 belowThis 参数不为空,则表示 tagName 需要比 belowThis 指定的 Tag 优先级更低
tag_names(index=None)
如果不带参数,表示返回 Text 组件中所有 Tags 的名字,若存在 index 参数则返回该位置上所有 Tags 的名字
tag_nextrange(tagName, index1, index2=None)
在 index1 到 index2 的范围内第一个 tagName 的位置,若不存在则返回空字符串。
tag_raise(tagName, aboveThis=None)
提高 Tag 的优先级,如果 aboveThis 参数不为空,则表示 tagName 需要比 aboveThis 指定的 Tag 优先级更高
tag_ranges(tagName)
返回所有 tagName 指定的文本,并将它们的范围以列表的形式返回
tag_remove(tagName, index1, index2=None)
删除 index1 到 index2 之间所有的 tagName,如果忽略 index2 参数,那么只删除 index1 指定字符的 tagName
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import tkinter as tkfrom tkinter import Textfrom tkinter import INSERTtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() text = Text(layout1, width=20 , height=8 , undo=True , autoseparators=False ) text.pack() text.insert (INSERT, "aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbcccccccccccc" ) text.tag_add("name" , "1.0" , "1.6" ) text.tag_config("name" , font=('微软雅黑' ,18 ,'bold' ), background="yellow" , foreground= "blue" , underline=1 ) top.mainloop()
列表框和组合框控件 详细查看:http://c.biancheng.net/tkinter/listbox.html
Combobox控件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import tkinter as tkfrom tkinter import ttkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() cbox = ttk.Combobox(layout1) cbox['value' ] = ('asp' ,'jsp' ,'php' ) cbox.current(2 ) def func (event ): messagebox.showinfo('提示' , cbox.get()) cbox.bind("<<ComboboxSelected>>" ,func) cbox.pack() top.mainloop()
不过需要注意的是 Combobox 并不包含在 tkinter 模块中,而是包含在tkinter.ttk
子模块中,因此若想使用 Combobox 控件,需要使用下面的导包方式:
对 Combobox 控件做简单的介绍,其语法格式如下所示:
1 cbox=Combobox(窗口对象,[参数列表])
获得你选择的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import tkinter as tkfrom tkinter import ttkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() cbox = ttk.Combobox(layout1) cbox['value' ] = ('asp' ,'jsp' ,'php' ) cbox.current(2 ) def func (): messagebox.showinfo('提示' , cbox.get()) cbox.bind("<<ComboboxSelected>>" ) cbox.pack() button1 = tk.Button(layout1, text="获得你选择的" , command=func) button1.pack() top.mainloop()
单选框和多选框按钮
属性
说明
activebackground
设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的背景色,默认值由系统指定
activeforeground
设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的前景色,默认值由系统指定
compound
1. 默认值为 None,控制 Radiobutton 中文本和图像的混合模式,默认情况下,如果有指定位图或图片,则不显示文本 2. 如果该选项设置为 “center”,文本显示在图像上(文本重叠图像) 3. 设置为 “bottom”,”left”,”right” 或 “top”,那么图像显示在文本的旁边,比如如”bottom”,则显示图像在文本的下方。
disabledforeground
指定当 Radiobutton 不可用的时的前景色颜色,默认由系统指定
indicatoron
1. 该参数表示选项前面的小圆圈是否被绘制,默认为 True,即绘制; 2. 如果设置为 False,则会改变单选按钮的样式,当点击时按钮会变成 “sunken”(凹陷),再次点击变为 “raised”(凸起)
selectcolor
设置当 Radiobutton 为选中状态的时候显示的图片;如果没有指定 image 选项,该选项被忽略
takefocus
如果是 True,该组件接受输入焦点,默认为 False
variable
表示与 Radiobutton 控件关联的变量,注意同一组中的所有按钮的 variable 选项应该都指向同一个变量,通过将该变量与 value 选项值对比,可以判断用户选中了哪个按钮。
方法
说明
deselect()
取消该按钮的选中状态
flash()
刷新 Radiobutton 控件,该方法将重绘 Radiobutton控件若干次(即在”active” 和 “normal” 状态间切换)
invoke()
1. 调用 Radiobutton 中 command 参数指定的函数,并返回函数的返回值 2. 如果 Radiobutton 控件的 state(状态) 是 “disabled” (不可用)或没有指定 command 选项,则该方法无效
select()
将 Radiobutton 控件设置为选中状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import tkinter as tkfrom tkinter import ttkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() tk.Radiobutton(layout1, text="php" , fg='blue' ,font=('微软雅黑' ,'12' ,'bold' ), value=0 ).pack(anchor = 'w' ) tk.Radiobutton(layout1, text="jsp" , value=2 ).pack(anchor = 'w' ) tk.Radiobutton(layout1, text="asp" , value=3 ).pack(anchor = 'w' ) top.mainloop()
上面一行一行的写很费劲
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import tkinter as tkfrom tkinter import ttkfrom tkinter import messageboxtop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() site = [('php' ,1 ), ('jsp' ,2 ), ('asp' ,3 )] v = tk.IntVar() for name, num in site: radio_button = tk.Radiobutton(layout1,text = name,value =num) radio_button.pack(anchor ='w' ) top.mainloop()
属性
说明
text
显示的文本,使用 “\n” 来对文本进行换行。
variable
1. 和复选框按钮关联的变量,该变量值会随着用户选择行为来改变(选或不选),即在 onvalue 和 offvalue 设置值之间切换,这些操作由系统自动完成 2. 在默认情况下,variable 选项设置为 1 表示选中状态,反之则为 0,表示不选中。
onvalue
通过设置 onvalue 的值来自定义选中状态的值。
offvalue
通过设置 offvalue 的值来自定义未选中状态的值。
indicatoron
默认为 True,表示是否绘制用来选择的选项的小方块,当设置为 False 时,会改变原有按钮的样式,与单选按钮相同
selectcolor
选择框的颜色(即小方块的颜色),默认由系统指定
selectimage
设置当 Checkbutton 为选中状态的时候显示的图片,若如果没有指定 image 选项,该选项被忽略
textvariable
Checkbutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容,如果变量被修改,Checkbutton 的文本会自动更新
wraplength
表示复选框文本应该被分成多少行,该选项指定每行的长度,单位是屏幕单元,默认值为 0
格式
1 Checkbutton(master=None, **options)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 import tkinter as tkfrom tkinter import Checkbuttonfrom tkinter import messageboxfrom tkinter import IntVarfrom tkinter import LEFTfrom tkinter import Buttontop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() def study (): print("你选择了" ) if CheckVar1.get(): print("php" ) if CheckVar2.get(): print("asp" ) if CheckVar3.get(): print("jsp" ) CheckVar1 = IntVar() CheckVar2 = IntVar() CheckVar3 = IntVar() check1 = Checkbutton(layout1, text="php" , fg='blue' , font=('微软雅黑' , 15 ,'bold' ), variable = CheckVar1, onvalue=1 , offvalue=0 ) check2 = Checkbutton(layout1, text="asp" , fg='blue' , font=('微软雅黑' , 15 ,'bold' ), variable = CheckVar2, onvalue=1 , offvalue=0 ) check3 = Checkbutton(layout1, text="jsp" , fg='blue' , font=('微软雅黑' , 15 ,'bold' ), variable = CheckVar3, onvalue=1 , offvalue=0 ) check1.pack () check2.pack () check3.pack () btn = Button(layout1,text="选好了" ,bg='#BEBEBE' ,command=study) btn.pack() top.mainloop()
Canvas画布控件 Canvas控件基本属性 下面对 Canvas 控件的常用属性做简单的介绍,如下表所示:
属性
方法
background(bg)
指定 Canvas 控件的背景颜色
borderwidth(bd)
指定 Canvas 控件的边框宽度
closeenough
1. 指定一个距离,当鼠标与画布对象的距离小于该值时,认为鼠标位于画布对象上 2. 该选项是一个浮点类型的值
confine
1. 指定 Canvas 控件是否允许滚动超出 scrollregion 选项设置的滚动范围,默认值为 True
selectbackground
指定当画布对象(即在 Canvas 画布上绘制的图形)被选中时的背景色,
selectborderwidth
指定当画布对象被选中时的边框宽度(选中边框)
selectforeground
指定当画布对象被选中时的前景色
state
设置 Canvas 的状态:”normal” 或 “disabled”,默认值是 “normal”,注意,该值不会影响画布对象的状态
takefocus
指定使用 Tab 键可以将焦点移动到输入框中,默认为开启,将该选项设置为 False 避免焦点在此输入框中
width
指定 Canvas 的宽度,单位为像素
xscrollcommand
与 scrollbar(滚动条)控件相关联(沿着 x 轴水平方向)
xscrollincrement
1. 该选项指定 Canvas 水平滚动的“步长” 2. 例如 ‘3c’ 表示 3 厘米,还可以选择的单位有 ‘i’(英寸),’m’(毫米)和 ‘p’(DPI,大约是 ‘1i’ 等于 ‘72p’) 3. 默认为 0,表示可以水平滚动到任意位置
yscrollcommand
与 scrollbar 控件(滚动条)相关联(沿着 y 轴垂直方向)
yscrollincrement
1. 该选项指定 Canvas 垂直滚动的“步长” 2. 例如 ‘3c’ 表示 3 厘米,还可以选择的单位有 ‘i’(英寸),’m’(毫米)和 ‘p’(DPI,大约是 ‘1i’ 等于 ‘72p’) 3. 默认值是 0,表示可以垂直方向滚动到任意位置
演示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import tkinter as tktop =tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) layout1=tk.Frame(top) layout1.pack() canvas = tk.Canvas(layout1, bg='#CDC9A5' , height=200 , width=300 ) canvas.pack() top.mainloop()
Canvas控件绘图常用方法 Cansvas 控件提供了一系列绘制几何图形的常用方法,下面对这些方法做简单介绍:
方法
说明
create_line(x0, y0, x1, y1, … , xn, yn, options)
1. 根据给定的坐标创建一条或者多条线段; 2. 参数 x0,y0,x1,y1,…,xn,yn 定义线条的坐标; 3. 参数 options 表示其他可选参数
create_oval(x0, y0, x1, y1, options)
1. 绘制一个圆形或椭圆形; 2. 参数 x0 与 y0 定义绘图区域的左上角坐标;参数 x1 与 y1 定义绘图区域的右下角坐标; 3. 参数 options 表示其他可选参数
create_polygon(x0, y0, x1, y1, … , xn, yn, options)
1. 绘制一个至少三个点的多边形; 2. 参数 x0、y0、x1、y1、…、xn、yn 定义多边形的坐标; 3. 参数 options 表示其他可选参数
create_rectangle(x0, y0, x1, y1, options)
1. 绘制一个矩形; 2. 参数 x0 与 y0 定义矩形的左上角坐标;参数 x 与 y1 定义矩形的右下角坐标; 3. 参数 options 表示其他可选参数
create_text(x0, y0, text, options)
1. 绘制一个文字字符串。其中 2. 参数 x0 与 y0 定义文字字符串的左上角坐标,参数 text 定义文字字符串的文字; 3. 参数 options 表示其他可选参数
create_image(x, y, image)
1. 创建一个图片; 2. 参数 x 与 y 定义图片的左上角坐标; 3. 参数 image 定义图片的来源,必须是 tkinter 模块的 BitmapImage 类或 PhotoImage 类的实例变量。
create_bitmap(x, y, bitmap)
1. 创建一个位图; 2. 参数 x 与 y 定义位图的左上角坐标; 3. 参数 bitmap 定义位图的来源,参数值可以是 gray12、gray25、gray50、gray75、hourglass、error、questhead、info、warning 或 question,或者也可以直接使用 XBM(X Bitmap)类型的文件,此时需要在 XBM 文件名称前添加一个 @ 符号,例如 bitmap=@hello.xbm
create_arc(coord, start, extent, fill)
1. 绘制一个弧形; 2. 参数 coord 定义画弧形区块的左上角与右下角坐标; 3. 参数 start 定义画弧形区块的起始角度(逆时针方向); 4. 参数 extent 定义画弧形区块的结束角度(逆时针方向); 5. 参数 fill 定义填充弧形区块的颜色。
建菜单时用到的相关方法
方法
说明
add_cascade()
添加一个父菜单,将一个指定的子菜单,通过 menu 参数与父菜单连接,从而创建一个下拉菜单。
add_checkbutton()
添加一个多选按钮的菜单项
[add_command()](# 添加菜单项)
添加一个普通的命令菜单项
add_radiobutton()
添加一个单选按钮的菜单项
add_separator()
添加一条分割线
add(add(itemType, options))
添加菜单项,此处 itemType 参数可以是以下几种:”command”、”cascade”, “checkbutton”、”radiobutton”、”separator” 五种,并使用 options 选项来设置 菜单其他属性。
方法
方法
说明
delete(index1, index2=None)
1. 删除 index1 ~ index2(包含)的所有菜单项 2. 如果忽略 index2 参数,则删除 index1 指向的菜单项
entrycget(index, option)
获得指定菜单项的某选项的值
entryconfig(index, **options)
设置指定菜单项的选项
index(index)
返回与 index 参数相应的选项的序号
insert(index, itemType, **options)
插入指定类型的菜单项到 index 参数指定的位置,类型可以是 是:”command”,”cascade”,”checkbutton”,”radiobutton” 或 “separator” 中的一个,或者也可以使用 insert_类型() 形式来, 比如 insert_cascade(index, **options)..等
invoke(index)
调用 index 指定的菜单项相关联的方法
post(x, y)
在指定的位置显示弹出菜单
type(index)
获得 index 参数指定菜单项的类型
unpost()
移除弹出菜单
yposition(index)
返回 index 参数指定的菜单项的垂直偏移位置
属性
说明
accelerator
1. 设置菜单项的快捷键,快捷键会显示在菜单项目的右边,比如 accelerator = “Ctrl+O” 表示打开; 2. 注意,此选项并不会自动将快捷键与菜单项连接在一起,必须通过按键绑定来实现
command
选择菜单项时执行的 callback 函数
label
定义菜单项内的文字
menu
此属性与 add_cascade() 方法一起使用,用来新增菜单项的子菜单项
selectcolor
指定当菜单项显示为单选按钮或多选按钮时选择中标志的颜色
state
定义菜单项的状态,可以是 normal、active 或 disabled
onvalue/offvalue
1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0,设置 offvalue/onvalue 的值可以自定义未选中状态的值 2.
tearoff
1. 如果此选项为 True,在菜单项的上面就会显示一个可选择的分隔线; 2. 注意:分隔线会将此菜单项分离出来成为一个新的窗口
underline
设置菜单项中哪一个字符要有下画线
value
1. 设置按钮菜单项的值 2. 在同一组中的所有按钮应该拥有各不相同的值 3. 通过将该值与 variable 选项的值对比,即可判断用户选中了哪个按钮
variable
当菜单项是单选按钮或多选按钮时,与之关联的变量
添加菜单项 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import tkinter as tkfrom tkinter import Menutop = tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) main_menu = Menu(top) main_menu.add_command(label="文件" ) main_menu.add_command(label="编辑" ) main_menu.add_command(label="格式" ) main_menu.add_command(label="查看" ) main_menu.add_command(label="帮助" ) top.config(menu=main_menu) top.mainloop()
创建下拉菜单 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import tkinter as tkfrom tkinter import Menutop = tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) main_menu = Menu(top) filemenu = Menu (main_menu) filemenu.add_command(label="文件" ) filemenu.add_command(label="编辑" ) filemenu.add_command(label="格式" ) filemenu.add_command(label="查看" ) filemenu.add_command(label="帮助" ) main_menu.add_cascade (label="文件" ,menu=filemenu) top.config(menu=main_menu) top.mainloop()
设置点击事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import tkinter as tkfrom tkinter import Menufrom tkinter import messageboxtop = tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) def dj (): messagebox.showinfo('提示' , '这是一个提示框' ) main_menu = Menu(top) main_menu.add_command(label="文件" ,command=dj) main_menu.add_command(label="编辑" ,command=dj) main_menu.add_command(label="格式" ,command=dj) main_menu.add_command(label="查看" ,command=dj) main_menu.add_command(label="帮助" ,command=dj) top.config(menu=main_menu) top.mainloop()
属性
说明
activebackground
指定当鼠标在上方飘过的时候滑块和箭头的背景颜色,默认由系统决定
activerelief
指定当鼠标在滑块上方飘过时滑块的样式,默认值是 “raised”,其他可选值有 “flat”,”sunken”,”groove”,”ridge”
background(bg)
指定背景颜色,默认值由系统指定
borderwidth(bd)
指定边框宽度,默认值是 0
command
当滚动条更新时回调的函数,通常指定对应组件的 xview() 或 yview() 方法
cursor
指定当鼠标在上方飘过的时的鼠标样式,默认值由系统指定
elementborderwidth
1. 指定滚动条和箭头的边框宽度 2. 默认值是 -1(表示使用 borderwidth 选项的值)
jump
1. 指定当用户拖拽滚动条时的行为 2. 默认值为 False,滚动条的任何一丝变动都会即刻调用 command 指定的回调函数 3. 设置为 True 则当用户松开鼠标才调用
orient
指定绘制 “horizontal”(垂直滚动条)还是 “vertical”(水平滚动条),默认值是 VERTICAL
repeatdelay
该选项指定鼠标左键点击滚动条凹槽的响应时间,默认值是 300(毫秒)
repeatinterval
该选项指定鼠标左键紧按滚动条凹槽时的响应间隔,默认值是 100(毫秒)
takefocus
指定使用 Tab 键可以将焦点移到该 Scrollbar 组件上,默认为开启,可以将该选项设置为 False 避免焦点在此组件上
troughcolor
指定凹槽的颜色,默认由系统指定
width
指定滚动条的宽度,默认值是 16px
属性
说明
activate(element)
1. 显示 element 参数指定的元素的背景颜色和样式; 2. element 参数可以设置为:”arrow1”(箭头1),”arrow2”(箭头2)或 “slider”(滑块)
delta(deltax, deltay)
1. 给定一个鼠标移动的范围 deltax 和 deltay,然后该方法返回一个浮点类型的值(范围 -1.0 ~ 1.0) 2. 注意:deltax 表示水平移动量,deltay 表示垂直移动量
fraction(x, y)
给定一个像素坐标 (x, y),该方法返回最接近给定坐标的滚动条位置。
get()
返回当前滑块的位置 (a, b),其中 a 值表示当前滑块的顶端或左端的位置,b 值表示当前滑块的底端或右端的位置。
identify(x, y)
1. 返回一个字符串表示指定位置下(如果有的话)的滚动条部件, 2. 返回值可以是:”arrow1”(箭头1),”arrow2”(箭头2)、”slider”(滑块)或 “”(空)
set(*args)
1. 设置当前滚动条的位置 2. 该方法有两个参数即 (first, last),其中 first 表示当前滑块的顶端或左端的位置,last 表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)
创建垂直滚动条 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import tkinter as tkfrom tkinter import RIGHTfrom tkinter import Ytop = tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) sbar1= tk.Scrollbar(top) sbar1.pack(side=RIGHT, fill=Y) top.mainloop()
创建水平滚动条 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import tkinter as tkfrom tkinter import BOTTOMfrom tkinter import HORIZONTALfrom tkinter import Xtop = tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) sbar1= tk.Scrollbar(top, orient=HORIZONTAL) sbar1.pack(side=BOTTOM, fill=X) top.mainloop()
示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import tkinter as tktop = tk.Tk() top.geometry('450x450+100+100' ) top.title('赵赛赛' ) sbar1= tk.Scrollbar(top) sbar1.pack(side=tk.RIGHT, fill=tk.Y) sbar2= tk.Scrollbar(top, orient=tk.HORIZONTAL) sbar2.pack(side=tk.BOTTOM, fill=tk.X) mylist = tk.Listbox(top,xscrollcommand = sbar2.set,yscrollcommand = sbar1.set) for i in range(30 ): mylist.insert(tk.END,'第' + str(i+1 )+'次:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ) mylist.pack(side=tk.LEFT,fill = tk.BOTH) sbar1.config(command =mylist.yview) sbar2.config(command = mylist.xview) top.mainloop()
Event事件处理