概述
Python3中tkinter 编程
Tkinter 编程
Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中
步骤:
1.导入tkinter模块
2.创建控件
3.指定这个控件的master,即这个控件是属于哪一个
4.告诉GM(geomertry manager)有这样一个控件产生了
简单的实例
创建一个窗口
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("400x400+400+200")
#设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
win.mainloop()
#mainloop则是主窗口的成员函数,也就是表示让这个窗口工作起来,
#并接收鼠标的和键盘的操作 #创建事件循环直到关闭主窗口
Label:标签控件可以显示文本
文本和字体的属性设置
参数 | 描述 |
---|---|
bg | 背景色,如bg=”red”, bg="#FF56EF" |
fg | 前景颜色,如fg=”red”, fg="#FF56EF" |
height | 设置显示高度、如果未设置此项,其大小以适应内容标签 |
relief | 指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunken |
width | 代表了父窗口 |
state | 设置组件状态;正常(normal),激活(active),禁用(disabled) |
bd | 设置显示宽度,如果未设置此项,其大小以适应内容标签 |
master | 代表了父窗口 |
text | 显示的文本内容 |
font | “字体”,大小 |
wraplength | 指定文本中多少宽度以后进行换行处理 |
justify | 对齐方式:justify = “left/right/center 等” |
fanchor | “字体”,大小 |
anchor | 文本位置:anchor = “n / s / e/ w/ center /ne / ns/等”,根据的是东南西北方向#根据的是东南西北方向 |
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("400x400+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
label = tkinter.Label(win,text = "可不可以啊", #文本
bg = "black", #文本背景色
fg = "red", #字体颜色
font = ("宋体",20), #字体风格
width=20, #文本宽度
height = 2, #文本高度
wraplength = 100, #文字换行
justify = "left", #文字对齐
anchor = "e") #文本的位置
#anchor文本位置:anchor = "n / s / e/ w/ center /ne / ns/等",根据的是东南西北方向#根据的是东南西北方向
label.pack() #pack()显示label
win.mainloop() #mainloop则是主窗口的成员函数,也就是表示让这个窗口工作起来,并接收鼠标的和键盘的操作
#创建事件循环直到关闭主窗口
Button 按钮控件
参数 | 描述 |
---|---|
command = 函数名 | 点击按钮执行函数,#有点像js,css中的onlick,submi,reset等,鼠标点击事件 |
command = win.quit | 关闭win窗口 |
button.pack() | 显示按钮 |
activebackground | 当鼠标放上去时,按钮的背景色 |
activeforeground | 当鼠标放上去时,按钮的前景色 |
bd | 按钮边框的大小,默认为 2 个像素 |
bg | 按钮的背景色 |
command | 按钮关联的函数,当按钮被点击时,执行该函数 |
fg | 按钮的前景色(按钮文本的颜色) |
font | 文本字体 |
height | 按钮的高度 |
highlightcolor | 要高亮的颜色 |
image | 按钮上要显示的图片 |
justify | 显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER |
padx | 按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离 |
pady | 按钮在y轴方向上的内边距(padding) |
relief | 边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT。 |
state | 设置按钮组件状态,可选的有NORMAL、ACTIVE、 DISABLED。默认 NORMAL。 |
underline | 下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,前两个字符带下划线,以此类推 |
width | 按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小) |
wraplength | 限制按钮每行显示的字符的数量 |
text | 按钮的文本内容 |
anchor | 锚选项,控制文本的位置,默认为中心 |
activebackground | 当鼠标放上去时,按钮的背景色 |
方法:
方法 | 描述 |
---|---|
deselect() | 清除单选按钮的状态 |
flash() | 在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态。 |
invoke() | 可以调用此方法来获得与用户单击单选按钮以更改其状态时发生的操作相同的操作 |
select() | 设置单选按钮为选中。 |
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("400x400+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
def func():
print("来重新说一次")
buttona = tkinter.Button(win,text="按钮",
command = func, #点击执行名为func 的函数
width =10,
height = 2) #command = win.quit 关闭名为win的窗口
# button = tkinter.Button(win,text="按钮",
# command = lambda :print("请重新说一次"),
# width =10,
# height = 2) #这里也可以直接用匿名函数进行书写
button.pack() #显示按钮
win.mainloop() #mainloop则是主窗口的成员函数,也就是表示让这个窗口工作起来,
#并接收鼠标的和键盘的操作 #创建事件循环直到关闭主窗口
Entry:输入控件
用于显示简单的文本内容
#类似css 的input输入框
Entry.pack() #显示Entry按钮
参数 | 描述 |
---|---|
bg | 输入框背景颜色 |
bd | 边框的大小,默认为 2 个像素 |
cursor | 光标的形状设定,如arrow, circle, cross, plus 等 |
font | 文本字体 |
exportselection | 默认情况下,你如果在输入框中选中文本,默认会复制到粘贴板,如果要忽略这个功能刻工艺设置 exportselection=0。 |
fg | 文字颜色。值为颜色或为颜色代码,如:‘red’,’#ff0000’ |
highlightcolor | 文本框高亮边框颜色,当文本框获取焦点时显示 |
justify | 显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER |
relief | 边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT。 |
selectbackground | 选中文字的背景颜色 |
selectborderwidth | 选中文字的背景边框宽度 |
selectforeground | 选中文字的颜色 |
show | 指定文本框内容显示为字符,值随意,满足字符即可。如密码可以将值设为 show="*" |
state | 默认为 state=NORMAL, 文框状态,分为只读和可写,值为:normal/disabled |
textvariable | 文本框的值,是一个StringVar()对象 |
width | 文本框宽度 |
xscrollcommand | 设置水平方向滚动条,一般在用户输入的文本框内容宽度大于文本框显示的宽度时使用。 |
方法:
方法 | 描述 |
---|---|
delete ( first, last=None ) | #删除文本框里直接位置值text.delete(10) # 删除索引值为10的值text.delete(10, 20) # 删除索引值从10到20之前的值text.insert(0, END) # 删除所有值 |
get() | 获取文件框的值 |
icursor ( index ) | 将光标移动到指定索引位置,只有当文框获取焦点后成立 |
index ( index ) | 返回指定的索引值 |
insert ( index, s ) | 向文本框中插入值,index:插入位置,s:插入值 |
select_adjust ( index ) | 选中指定索引和光标所在位置之前的值 |
select_clear() | 清空文本框 |
select_from ( index ) | 设置光标的位置,通过索引值 index 来设置 |
select_present() | 如果有选中,返回 true,否则返回 false。 |
select_range ( start, end ) | 选中指定索引位置的值,start(包含) 为开始位置,end(不包含) 为结束位置start必须比end小 |
select_to ( index ) | 选中指定索引与光标之间的值 |
xview ( index | 该方法在文本框链接到水平滚动条上很有用。 |
xview_scroll ( number, what ) | 用于水平滚动文本框。 what 参数可以是 UNITS, 按字符宽度滚动,或者可以是 PAGES, 按文本框组件块滚动。 number 参数,正数为由左到右滚动,负数为由右到左滚动。 |
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("400x400+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
e = tkinter.Variable() #定义一个e变量 作用类似输入框 checked ="" ,默认的内容
#可以理解为代表了名为entry的输入框的对象
entry = tkinter.Entry(win,textvariable = e) #类似css 的input输入框
#textvariable = e 接收的内容
entry1 = tkinter.Entry(win,show="*") #show="*" *符号可以随意替换,起一个掩盖密码的作用
e.set("哟哟切克闹") #设置e的默认值,输入框就有了这个默认内容
def input():
print(entry.get()) #打印名为entry输入框的内容
def input1():
print(entry1.get()) #打印名为entry1输入框的内容
button = tkinter.Button(win,
text = "打印输入框entry",
command =input)
#点击按钮打印文本框的内容
button1 = tkinter.Button(win,
text = "打印输入框entry1",
command =input1)
#点击按钮打印文本框的内容
print(e.get()) #输出输入框内容,上文的e.set 默认值 “哟哟切克闹”
print(entry.get()) #也能用entery输入框的名字来输出输入框的内容
entry.pack() #显示entry
entry1.pack() #显示entry1
button.pack() #显示button
button1.pack() #显示button
win.mainloop() # mainloop则是主窗口的成员函数,也就是让这个窗口工作起来,
# 并接收鼠标的和键盘的操作 #创建事件循环直到关闭主窗口
Text:文本控件
Text:文本控件
用于显示多行文本
tkinter.Scrollbar() #创建滚动条
Text.pack() #显示Entry按钮
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
# win.geometry("400x400+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
scroll = tkinter.Scrollbar() #创建滚动条
text = tkinter.Text(win,
height=6, #显示文本的行数
width = 20)
scroll.pack(side=tkinter.RIGHT,fill = tkinter.Y) #side将滚动条放到窗体的右侧
#fill填充Y轴的方向,并和边框靠齐,即没有边距。
text.pack(side=tkinter.LEFT,fill = tkinter.Y) #同样的填充左侧
str = '''IG nb!!!IG nb!!!IG nb!!!
IG nb!!!IG nb!!!IG nb!!!IG nb!!!
IG nb!!!IG nb!!!IG nb!!!IG nb!!!
IG nb!!!IG nb!!!IG nb!!!IG nb!!!
asdasdadadadadasdasdasdasdasdasdasdadadadadasdasdasdasdasd
asdasdasdasddasdasdasdasdadadadadasdasdasdasdasd
asdasdasdasddasdasd
asdadasdasdada
asdsada
asdadasdasdada
asdsada
asdasdasdasddasdasd
asdadasdasdada
asdsada
'''
scroll.config(command = text.yview) #scroll关联text文本
text.config(yscrollcommand = scroll.set) #text关联scroll滚动条
text.insert(tkinter.INSERT,str) #输入框插入str
text.pack() #显示text
win.mainloop() # mainloop则是主窗口的成员函数,也就是让这个窗口工作起来,
# 并接收鼠标的和键盘的操作 #创建事件循环直到关闭主窗口
多选框CheckButton:
CheckButton:多选框控件
tkinter.CheckButton
相当于CSS中的input输入框中checkbox
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("160x200+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
def updata(): #点击多选框判断选择了谁,
mssage = "" #定义一个空的str字符串
if hobby1.get()== True: #当hobby1选项框的选中,则mssage变量加上字符串"moneyn" 并换行
mssage += "moneyn"+"moneyn"+"moneyn"
if hobby2.get()== True:
mssage += "powern"
if hobby3.get()== True:
mssage += "peoplen"
text.delete(1.2,2.0) #清除调用者text中的内容,防止下一次判断的时候重复打印上次的内容
#0.0代表的是小标为第0行的第0个元素,后面的tkinter.END表示末尾,
# delete(index1, index2=None)表示从删除index1到index2的元素,但不包括index2,
#注意这里index1, index2必须为浮点数 n.n 表示第n行的第n个下标,
#而且,文本框中index1实际是从1.0 开始的,( 0.n 来说是比文本内容还要上一行,超过文本框或者文本框开头)
#比如(0.1,1.0)就没有效果,因为不包括index2,取不到index2
#必须打(0.1,2.0),删除第一行的内容,因为0.1相当于1.0
#而(1.2,1.4)则为删除第一行从下标2开始, 到下标为4的元素之前
text.insert(tkinter.INSERT,mssage) #将mssage的内容传给下文的text文本框
hobby1 = tkinter.BooleanVar() #定义变量hobby1(布尔类型的变量,只会返回True和False),
hobby2 = tkinter.BooleanVar() #用来给多选框绑定变量,让计算机知道我们选择的哪一个内容
hobby3 = tkinter.BooleanVar() #相当于css里面的<input type="checkbox" checked=""/>
# checked设置或返回 checkbox 是否应被选中。
check1 = tkinter.Checkbutton(win,text="money",variable= hobby1,command = updata)
#tkinter.Checkbutton创建名为check1的复选框
check2 = tkinter.Checkbutton(win,text="power",variable= hobby2,command = updata)
#command当选择框点击的时候,执行update函数
check3 = tkinter.Checkbutton(win,text="people",variable= hobby3,command = updata)
#variable= hobby3 将这个复选框绑定一个名为hobby3的布尔变量(variable)
text = tkinter.Text(win,width=50,height=5) #设置用来接收上文的updata()函数的返回值
check1.pack()
check2.pack()
check3.pack()
text.pack()
win.mainloop() # mainloop则是主窗口的成员函数,也就是让这个窗口工作起来,
# 并接收鼠标的和键盘的操作 #创建事件循环直到关闭主窗口
Radiobutton:单选框控件
thinter.Radiobutton
类似css中的input输入框中的radio
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("160x200+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
"""
Radiobutton:单选框控件
thinter.Radiobutton
类似css中的input输入框中的radio
<input type="radio" name="" id="" value="" />
"""
def updata():
print(r.get())
r = tkinter.IntVar() #一样的设置变量,但是单选框用的都是同一个变量,这里绑定的为Int(整数)类型的,
radio1 = tkinter.Radiobutton(win,text = "one",value = 1,variable=r,command = updata)
#text = "one"单选框能显示的内容 ,
# variable=r 给radio1单选框绑定变量,与CSS单选框相似,设置相同的name属性,表示为同一类只能选一个
#value = 1 表示当我们选择这个单选框的时候的值为1,
#如果想要设置str(字符串类型的话),就要更改上面的r = tkinter.IntVar()为tkinter.StringVar()
#但是tkinter.StringVar()时有个bug,他会默认单选框全选,后面补坑
radio2 = tkinter.Radiobutton(win,text = "two",value = 2,variable=r,command = updata)
radio1.pack()
radio2.pack()
win.mainloop() # mainloop则是主窗口的成员函数,也就是让这个窗口工作起来,
# 并接收鼠标的和键盘的操作 #创建事件循环直到关闭主窗口
Listbox:列表框控件
作用:
可以包换一个或者多个文本框
在listbox控件的小窗口显示一个字符串
类似css中的多级下拉菜单
参数 | 描述 |
---|---|
bg | 背景色,如bg=”red”, bg="#FF56EF" |
fg | 前景色,如fg=”red”, fg="#FF56EF" |
height | 设置显示高度、如果未设置此项,其大小以适应内容标签 |
relief | 指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunken |
width | 代表了父窗口 |
state | 设置组件状态;正常(normal),激活(active),禁用(disabled) |
bd | 设置显示宽度,如果未设置此项,其大小以适应内容标签 |
master | 代表了父窗口 |
selectmode | 选择模式,MULTIPLE:多选 BROWSE:通过鼠标的移动选择 EXTENDED:shift和ctrl配合使用 |
listvariable | 设置listvariable属性 |
一些常用的函数:
函数 | 描述 |
---|---|
insert | 追加item,如listbox.insert(0,“addBox1”,“addBox2”) |
delete | 删除item,如listbox.delete(3,4),删除全部(0,END) |
select_set | 选中,如listbox.select_set(0,2) |
select_clear | 取消选中如listbox.select_clear(0,1) |
get | 返回制定索引的项值,如listbox.get(1);返回多个项值,返回元组,如listbox.get(0,2);返回当前选中项的索引 |
listbox.curselection() | 返回当前选中项的索引,如listbox.curselection() |
selection_includes | 判断当前选中的项目中是否包含某项,如listbox.selection_includes(4) |
import tkinter
win = tkinter.Tk() #创建主窗口
win.title("小姐姐") #设置窗口标题
win.geometry("160x200+400+200") #设置大小和位置 前面为 长x宽 中间为小写x
#后面的参数为距离屏幕的左边边框400,距离上边框200
b1 = tkinter.Listbox(win,selectmode = tkinter.BROWSE)
#添加一个列表框,selectmode 选择模式
for item in ["gg","mm","good","verygood","ojbk","asdasd","qweqwe","zxc"]:
b1.insert(tkinter.END,item) #tkinter.END按顺序添加,实则倒序添加,
# 因为是从下到上的添加
#如果为Int(整数),则为按下标进行添加,
# b1.insert(tkinter.ACTIVE,"cool") #单独进行一个添加 #(注释的内容自行尝试)
# b1.insert(tkinter.ACTIVE,["cool1","coo2","coo3"])#添加的是一个列表 #(注释的内容自行尝试)
b1.delete(1,3) #删除,参数1位开始的索引,参数2位结束的索引(包括参数2的下标)
#如果小标2没有,默认删除参数1的下标元素
b1.select_set(2,5) #选中 参数1 为开始的索引,参数2 为结束的索引,如果不指定参数2,只选中第一个索引处的内容
#b1.select_set(2) #(注释的内容自行尝试)
b1.select_clear(2,3) #取消选择项包括了小标4
#b1.select_clear(3) #(注释的内容自行尝试)
#print(b1.size())#获取到列表中的元素的个数 #(注释的内容自行尝试)
#print(b1.get(2, 4))#从列表中取值 参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只获取第一个索引处的内容
#print(b1.get(2)) #(注释的内容自行尝试)
#返回当前的索引项,不是item元素
print(b1.curselection())
print(b1.selection_includes(1)) #selection_includes判断 一个选项是否被选中,选中返回True
print(b1.selection_includes(3)) #未选中 返回false
b1.pack()
win.mainloop() # mainloop则是主窗口的成员函数,也就是让这个窗口工作起来,
#创建事件循环直到关闭主窗口
未完待续。。。。
tkinter 其他属性先睹为快:
https://www.cnblogs.com/aland-1415/p/6849193.html
最后
以上就是稳重可乐为你收集整理的#Python3中Tkinter 编程Python3中tkinter 编程的全部内容,希望文章能够帮你解决#Python3中Tkinter 编程Python3中tkinter 编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复