tkinter GUI编程(学习笔记-2 tkinter的常用组件)

简介: tkinter GUI编程(学习笔记-2 tkinter的常用组件)

Label组件

用于创建标签的组件,主要用于显示不可修改的文本、图片或者图文混排内容。

text                    设置标签显示的文本

bg和fg               指定组件的背景色和前景色

width和height    指定组件的宽度和高度

padx和pady       组件内文本 左右和上下 的预留空白宽度)

anchor               设置文本在组件内部的位置

justify                 设置文本对齐方式

font                    设置字体

1. #测试标签的属性
2. from tkinter import *     #导入tkinter模块
3. str="标签的属性测试"
4. mylabel=Label(text=str)                     
5. mylabel.config(justify=CENTER)         #设置文本居中对齐
6. mylabel.config(width=20,height=4)    #设置标签的宽和高  单位为字符个数
7. mylabel.config(bd=2,relief=SOLID)     #设置边框的宽度
8. mylabel.config(wraplength=160)        #设置文字回卷宽度为160像素
9. mylabel.config(anchor=W)                  #设置内容在标签内部的左侧
10. mylabel.config(font=('宋体',18))         #设置字体
11. mylabel.pack(side=TOP)                      #设置标签在窗口的顶端
12. mainloop()   #启动事件循环

Button组件

用于创建按钮,通常用于响应用户的单击操作,即单击按钮时将执行指定的函数。

Button组件的command属性用于指定响应函数。

1. #Button按钮组件  计算1~100的累加值
2. from tkinter import *     #导入tkinter模块
3. win=Tk()
4. win.title("Button Test")
5. win.geometry("300x200")
6. labell=Label(win,text="此处显示计算结果")
7. labell.config(font=("宋体",12))
8. labell.pack()
9. 
10. def computing():
11. sum=0
12. for i in range(100+1):
13. sum+=i
14.     result="累加结果是:"+str(sum)
15.     labell.config(text=result)
16. 
17. str1='计算1——100累加值'
18. mybutton=Button(win,text=str1)
19. mybutton.config(justify=CENTER)          #设置按钮文本居中
20. mybutton.config(width=20,height=3)       #设置按钮的宽和高
21. mybutton.config(bd=3,relief=RAISED)      #设置边框的宽度和样式
22. mybutton.config(anchor=CENTER)           #设置内容在按钮内部居中
23. mybutton.config(font=("隶书",12,"underline"))
24. 
25. mybutton.config(command=computing)              #command属性用于指定响应函数
26. mybutton.config(activebackground="yellow")      #点击背景颜色
27. mybutton.config(activeforeground="red")         #点击前景颜色
28. mybutton.pack()
29. win.mainloop()   #启动事件循环

Entry组件

输入组件,用于显示和输入简单的单行文本。

部分属性与Label组件相同。

Entry组件的常用属性和方法

state                                设置组件状态。

validate                           设置执行validatecommand校验函数的时间

validatecommand            设置校验函数

textvariable                      获取组件内容的变量

get()                                 返回组件中的全部字符

delete( first,last=None)    删除从 first开始到last之前的字符

1. # Entry组件  输入数据并计算累加和
2. from tkinter import *     #导入tkinter模块
3. 
4. def computing():
5. sum=0
6.     n=int(number.get())
7. for i in range(n+1):
8. sum+=i
9.     result="累加结果是:"+str(sum)
10.     label3.config(text=result)
11. 
12. win=Tk()
13. win.title("Entry Test")
14. win.geometry("300x200")
15. 
16. label1=Label(win,text="请输入计算数据:")
17. label1.config(width=16,height=3)
18. label1.config(font=("宋体",12))
19. label1.grid(row=0,column=0)
20. number=StringVar() 
21. entry1=Entry(win,textvariable=number,width=16)
22. entry1.grid(row=0,column=1)
23. 
24. label2=Label(win,text="点击确认:")
25. label2.config(width=14,height=3)
26. label2.config(font=("宋体",12))
27. label2.grid(row=1,column=0)
28. 
29. mybutton=Button(win,text='计算')
30. mybutton.config(justify=CENTER)          #设置按钮文本居中
31. mybutton.config(width=14,height=2)       #设置按钮的宽和高
32. mybutton.config(bd=3,relief=RAISED)      #设置边框的宽度和样式
33. mybutton.config(anchor=CENTER)           #设置内容在按钮内部居中
34. mybutton.config(font=("隶书",12))
35. mybutton.config(command=computing)       #command属性用于指定响应函数
36. mybutton.grid(row=1,column=1)
37. 
38. label3=Label(win,text="显示结果")
39. label3.config(width=16,height=3)
40. label3.config(font=("宋体",12))
41. label3.place(x=50,y=130)
42. 
43. win.mainloop()   #启动事件循环

Entry组件       控制变量。控制变量是和组件相关联的一种对象。

例如,控制变量与Entry组件关联时,控制变量的值和Entry组件中的文本会关联变化;将控制变量与Radiobutton组件(单选按钮组)关联时,改变单选按钮选择时,控制变量的值随之改变;反之,改变控制变量的值,对应值的单选按钮被选中。

1. myvar=BooleanVar()
2. myvar=StringVar()
3. myvar=IntVar()
4. myvar=DoubleVar()

Listbox组件

用于创建列表框,列表框允许用户一次选择一个或多个列表项。

Listbox组件的部分属性和方法

  · Listvariable属性关联一个StringVar类型的控制变量,该变量关联列表框全部选项,

  · Selectmode用于设置列表项选择模式,

  · activate(index)方法用于选中index对应的列表项。

cursection()方法返回包含选中项index的元组,无选中时返回空元组。

insert(index, relements)方法在index位置插入一个或多个列表项。

get( first,last=None)方法返回包含[first,last]范围内的列表项的文本元组。

Listbox组件的部分方法将列表项位置(index)作为参数。Listbox组件中第一个列表项的index值为0,最后一个列表项index可以使用常量tkinter.END表示。当前选中列表项的index值用常量tkinter.ACTIVE表示。

1. # 列表框操作  Listbox组件
2. from tkinter import *     #导入tkinter模块
3. 
4. win=Tk()
5. listbox=Listbox(win)
6. #初始化列表框
7. items=["HTML5","CSS3","JavaScript","Jquery"]
8. for item in items:
9.     listbox.insert(END,item)
10. listbox.pack(side=LEFT,expand=1,fill=Y)
11. 
12. def additem():         #向列表中添加选项
13. str=entry1.get()    #获取字符串
14. if not str=="":
15.         index=listbox.curselection()
16. if len(index)>0:
17.             listbox.insert(index[0],str)  #有选中项 在选中项前添加一项
18. else:
19.             listbox.insert(END,str)        #无选中项 添加到最后
20. 
21. def removeitem():   #从列表中删除选项
22.     index=listbox.curselection()
23. if len(index)>0:
24.         listbox.delete(index[0],index[-1])  #删除有选中的多项 
25. else:
26.         listbox.delete(index[0])                 #删除选中的一项
27. 
28. entry1=Entry(width=20)
29. entry1.pack(anchor=NW)
30. bt1=Button(text="添加",command=additem)
31. bt1.pack(anchor=NW)
32. bt2=Button(text="删除",command=removeitem)
33. bt2.pack(anchor=NW)
34. 
35. win.mainloop()   #启动事件循环

Radiobutton组件,用于创建单选按钮组。

1. # Radiobutton 组件  单选按钮组操作示例
2. from tkinter import *     #导入tkinter模块
3. 
4. win=Tk()
5. label1=Label(win,text="请为您最喜欢的体育项目投票")
6. label1.grid(row=1,column=1,columnspan=2)
7. 
8. s_items=IntVar()
9. s_items.set(2)
10. 
11. frame1=Frame(bd=2,relief=RIDGE)  #框架1
12. frame1.grid(row=2,column=1)
13. 
14. frame2=Frame(bd=0,relief=RIDGE)  #框架2
15. frame2.grid(row=2,column=2)
16. 
17. radio1=Radiobutton(frame1,text="足球",variable=s_items,value=1,width=8)
18. radio1.grid(row=1,column=1)
19. radio2=Radiobutton(frame1,text="排球",variable=s_items,value=2,width=8)
20. radio2.grid(row=2,column=1)
21. radio3=Radiobutton(frame1,text="篮球",variable=s_items,value=3,width=8)
22. radio3.grid(row=3,column=1)
23. 
24. num1=IntVar()
25. entry1=Entry(frame2,textvariable=num1,width=10,state='readonly')
26. entry1.grid(row=1,column=1,pady=4)
27. num2=IntVar()
28. entry2=Entry(frame2,textvariable=num2,width=10,state='readonly')
29. entry2.grid(row=2,column=1,pady=4)
30. num3=IntVar()
31. entry3=Entry(frame2,textvariable=num3,width=10,state='readonly')
32. entry3.grid(row=3,column=1,pady=4)
33. 
34. def voting():
35. global num1,num2,num3
36.     temp=s_items.get()
37. if temp==2:
38.         num2.set(num2.get()+1)
39. elif temp==1:
40.         num1.set(num1.get()+1)
41. else:
42.         num3.set(num3.get()+1)
43. 
44. bt1=Button(win,text="请投票",command=voting)
45. bt1.grid(row=3,column=1,columnspan=2,pady=5)
46. 
47. win.geometry("300x200")
48. win.mainloop()   #启动事件循环

Checkbutton组件,用于创建复选框,用来标识是否选定某个选项。

1. # Checkbutton 组件操作示例
2. from tkinter import *     #导入tkinter模块
3. 
4. win=Tk()
5. label1=Label(win,text="Checkbutton按钮测试")
6. label1.config(font=("宋体",18),justify=CENTER)
7. label1.grid(row=1,column=1,columnspan=2)
8. 
9. choice1=IntVar()
10. choice1.set(0)
11. choice2=IntVar()
12. choice2.set(0)
13. 
14. frame1=Frame(bd=0,relief=RIDGE)  #框架1
15. frame1.grid(row=2,column=1)
16. check1=Checkbutton(frame1,text="粗体",variable=choice1,width=8,pady=10)
17. check1.grid(row=1,column=1)
18. check2=Checkbutton(frame1,text="斜体",variable=choice2,width=8,pady=10)
19. check2.grid(row=1,column=2)
20. 
21. def changeFont():
22.     temp=choice1.get()
23. if choice1.get()==1 and choice2.get()==1:
24.         label1.config(font=("宋体",18,"bold italic"))
25. elif choice1.get()==1 and choice2.get()==0:
26.         label1.config(font=("宋体",18,"bold"))    
27. elif choice1.get()==0 and choice2.get()==1:
28.         label1.config(font=("宋体",18,"italic"))    
29. else:
30.         label1.config(font=("宋体",18))        
31. 
32. check1.config(command=changeFont)
33. check2.config(command=changeFont)
34. win.geometry("300x100")
35. win.mainloop()   #启动事件循环

 

Text组件,用来显示和编辑多行文本。

1. # Text组件构建文本编辑器
2. from tkinter import *     #导入tkinter模块
3. win=Tk()
4. frame1=LabelFrame(relief=GROOVE,text="工具栏:")
5. frame1.pack(anchor=NW,fill=X)
6. bt1=Button(frame1,text="复制")
7. bt1.grid(row=1,column=1)
8. bt2=Button(frame1,text="剪切")
9. bt2.grid(row=1,column=2)
10. bt3=Button(frame1,text="粘贴")
11. bt3.grid(row=1,column=3)
12. bt4=Button(frame1,text="清空")
13. bt4.grid(row=1,column=4)
14. 
15. text1=Text()
16. text1.pack(expand=YES,fill=BOTH)
17. 
18. def docopy():
19.     data=text1.get(SEL_FIRST,SEL_LAST)    #获取选中内容
20.     text1.clipboard_clear()               #清除剪切板
21.     text1.clipboard_append(data)          #将内容写入剪切板
22. def docut():
23.     data=text1.get(SEL_FIRST,SEL_LAST)
24.     text1.delete(SEL_FIRST,SEL_LAST)      #清除选中的内容
25.     text1.clipboard_clear()
26.     text1.clipboard_append(data)
27. def dopaste():
28.     text1.insert(INSERT,text1.clipboard_get())   #插入剪切版中的内容
29. def doclear():
30.     text1.delete("1.0",END)               #删除全部的内容
31. 
32. bt1.config(command=docopy)
33. bt2.config(command=docut)
34. bt3.config(command=dopaste)
35. bt4.config(command=doclear)
36. 
37. win.mainloop()   #启动事件循环

Spinbox输入组件,用于创建在一组选项或一定范围的数字内滚动选择的组件。

 

1. # Spinbox输入组件的应用
2. from tkinter import *     #导入tkinter模块
3. win=Tk()
4. win.geometry("300x200")
5. label1=Label(text="请选择科目和成绩")
6. label1.pack(expand=1,fill=X)
7. label1.config(font=("隶书",15))
8. label2=Label()
9. label2.config(font=("宋体",18))
10. label2.pack()
11. subject=StringVar()
12. score=IntVar()
13. spin1=Spinbox(textvariable=subject,values=("数学","语文","英语"),wrap=True)
14. spin1.pack()
15. spin2=Spinbox(textvariable=score,from_=60,to=100,increment=5,wrap=True)
16. spin2.pack()
17. 
18. def change():
19.     label2.config(text=subject.get()+str(score.get()))
20. 
21. bt1=Button(text="确定",command=change)    
22. bt1.pack()
23. win.mainloop()   #启动事件循环

相关文章
|
6月前
|
Python
tkinter之简单使用
tkinter之简单使用
51 0
|
6月前
|
数据可视化 Linux C++
Python GUI编程:Tkinter与PyQt的选择
Python作为一门流行的编程语言,在GUI编程领域也有着非常强大的工具。其中,Tkinter和PyQt是两个备受推崇的GUI库。本文将介绍这两个库的优缺点,并帮助读者决定应该选择哪一个。
|
5月前
|
SQL 前端开发 Java
Python GUI编程(Tkinter)
Python GUI编程(Tkinter)
|
6月前
|
开发框架 程序员 开发者
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
|
6月前
|
Python
Python GUI编程的两种选择:Tkinter与PyQt
Python作为一门流行的编程语言,其GUI编程也备受关注。在GUI编程中,Tkinter和PyQt是两种常见的选择。本文将从简介、使用、优缺点等多个方面对比这两种框架,以帮助读者选择适合自己的工具。
|
6月前
|
前端开发 Java Linux
【Tkinter 入门教程】
【Tkinter 入门教程】
209 0
|
API Python
Python中的GUI编程:Tkinter和PyQt入门指南
图形用户界面(GUI)是用户与计算机交互的一种方式,Python提供了多个库用于实现GUI应用程序。其中,Tkinter和PyQt是两个常用的GUI库。本文将介绍如何使用Tkinter和PyQt进行Python中的GUI编程。
|
前端开发 Python
Tkinter的基础使用介绍
Tkinter的基础使用介绍。更多文章请关注个人公众号:python学习杂记
100 0
|
Python 容器
tkinter GUI编程(学习笔记-1 窗口组件与布局)
tkinter GUI编程(学习笔记-1 窗口组件与布局)
131 0
|
前端开发 Python 容器
python GUI编程(Tkinter)
python GUI编程(Tkinter)
202 0