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() #启动事件循环