Python笔记_第四篇_高阶编程_GUI编程之Tkinter_2.控件类
1. Label控件:
说明:标签控件,可显示文本
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # Label:标签控件,可以显示文本 # win:父窗体 # text:显示的文本内容 # width: 高度 # height:宽度 # bg:背景色 # fb:字体颜色,前景色 # font:字体和字体的大小 # wraplength:指定text文本中多宽进行换行 # justify:设置换行后的对齐方方法 # anchor:位置 e s w n(东南西北),center中心,es,ws,en,wn(东南,西南,东北,西北) label = tkinter.Label(win, text="Thomas is a good man", bg = "black", fg = "white", font = ("黑体",14), width = 10, height = 4, wraplength = 100, justify = "left", anchor = "e") # 显示出来 label.pack() # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:让标签显示出现要进行pack放置的命令。
2. Button控件:
说明:
Button控件表示按钮。
图示1:
实例1:
import tkinter def func(): print("Thomas is a good man") # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # Button:创建按钮 # win:父窗体 # text:显示的文本内容 button1 = tkinter.Button(win, text="按钮", command=func, width=10, height=10) # func:写函数的方式 button1.pack() button2 = tkinter.Button(win, text="按钮", command=lambda:print("Thomas is handsome man"), width=10, height=10) # lambda表达式 button2.pack() button3 = tkinter.Button(win, text="按钮", command=win.quit, width=10, height=10) # win.quit/win.destroy 退出 button3.pack() # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:comand用于放置事件,事件一般可以导入函数形式、lambda表达式方式、或者win.quit的内置函数。
3.Entry控件:
说明1:
Entry表示为输入控件,用于显示简单的文本。
图示1:
实例1:
import tkinter def func(): print("Thomas is a good man") # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # Entry:输入控件 # 用于显示简单的文本内容 # 绑定变量 e = tkinter.Variable() # show 密文显示 ****/....等 # entry = tkinter.Entry(win, show = "*",textvariable = e) entry.pack() # e就代表输入框这个对象 # 设置值 e.set("sunck is a good man") # 取值 print(e.get()) print(entry.get()) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:在这里用于到了绑定变量,绑定变量用textvariable来接受这个绑定变量,绑定变量分数值型、布尔型等。其中获取变量用的get方式获取。
说明2:
我们在用一个点击输出内容的方式。
图示2:
实例2:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 def showInfo(): print(entry.get()) entry = tkinter.Entry(win) entry.pack() button = tkinter.Button(win,text="按钮",command=showInfo) button.pack() # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:用于点击输入的方式。
4. Text控件:
说明1:
普通的文本控制方式,用于显示多行文本,不带滚动条。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # Text:文本控件。用于显示多行文本。 # heigth:表示显示的行数 text = tkinter.Text(win,width=30,height=4) text.pack() str = '''I stand here today humbled by the task before us, grateful for the trust you have bestowed, mindful of the sacrifices borne by our ancestors. I thank President Bush for his service to our nation, as well as the generosity and cooperation he has shown throughout this transition. ''' # 插入文本 text.insert(tkinter.INSERT,str) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:插入文本我们用了一个insert的方式。
说明2:
用于显示文本的滚动条。
图示2:
实例2:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 # win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # 创建滚动条 scroll = tkinter.Scrollbar() text = tkinter.Text(win,width=30,height=5) # side放到窗体的那一侧,fill把Y轴方向填满。 scroll.pack(side=tkinter.RIGHT,fill=tkinter.Y) text.pack(side=tkinter.LEFT,fill=tkinter.Y) # 关联 scroll.config(command=text.yview) text.config(yscrollcommand=scroll.set) str = ''' I stand here today humbled by the task before us, grateful for the trust you have bestowed, mindful of the sacrifices borne by our ancestors. I thank President Bush for his service to our nation, as well as the generosity and cooperation he has shown throughout this transition. ''' # 插入文本 text.insert(tkinter.INSERT,str) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:注意这里我们用到了一个config的方法去设置位置。
5. CheckButton控件:
说明:
这个叫多选框控件。后面有对应的单选框控件。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # CheckButton:多选框控件 def update(): message ="" if hobby1.get() == True: message += "money\n" if hobby2.get() == True: message += "power\n" if hobby3.get() == True: message += "people\n" # 清除所有text所有内容 text.delete(0.0,tkinter.END) text.insert(tkinter.INSERT,message) # 要绑定的变量 hobby1 = tkinter.BooleanVar() # 多选框 check1 = tkinter.Checkbutton(win,text="Money",variable=hobby1,command=update) check1.pack() hobby2 = tkinter.BooleanVar() check2 = tkinter.Checkbutton(win,text="power",variable=hobby2,command=update) check2.pack() hobby3 = tkinter.BooleanVar() check3 = tkinter.Checkbutton(win,text="people",variable=hobby3,command=update) check3.pack() text = tkinter.Text(win,width=50,height=5) text.pack() # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:我们这里还用到一个布尔型的绑定变量。
6. RadioButton控件:
说明1:
单选框控件。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # Radiobutton:单选框控件 def update(): print(r.get()) # 绑定变量 # 注意:一组单选框要绑定同一个变量 r = tkinter.IntVar() #绑定整型 # r = tkinter.StringVar() # 绑定字符串 radio1 = tkinter.Radiobutton(win,text="one",value=1,variable=r,command=update) radio1.pack() radio2 = tkinter.Radiobutton(win,text="two",value=2,variable=r,command=update) radio2.pack() radio3 = tkinter.Radiobutton(win,text="three",value=3,variable=r,command=update) radio3.pack() # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
7. Listbox控件:
说明1:
列表框控件。可以包含一个或多个文本框。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Listbox:列表框控件。可以包含一个或多个文本框。 # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。 # 1、创建一个Listbox,添加几个元素 listbox = tkinter.Listbox(win,selectmode=tkinter.BROWSE) listbox.pack() for item in ["good","nice","handsome","cool","vg","vn"]: # 按顺序添加 listbox.insert(tkinter.END,item) # 在开始添加 # listbox.insert(tkinter.ACTIVE,"cool") # 将列表当做一个元素添加 # listbox.insert(tkinter.END,["very good","very nice"]) # 删除: # 参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容 # listbox.delete(1,3) # 下标为1的元素 # listbox.delete(1) # 选中 listbox.select_set(2,5) # listbox.select_set(2) # 取消 # listbox.select_clear(2,4) # listbox.select_clear(3) # 获取到列表中的元素个数 # print(listbox.size()) # 获取值,返回一个元组 # print(listbox.get(2,4)) # print(listbox.get(2)) # 返回当前的索引项,不是item元素 print(listbox.curselection()) # 判断一个选项是否被选中,返回为布尔值 print(listbox.select_includes(1)) print(listbox.select_includes(3)) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
说明2:
列表框控件。可以包含一个或多个文本框。在Listbox小窗口显示一个字符串。用于目录选择。与BROWSE相似,但不支持鼠标移动选中位置。
图示2:
实例2:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Listbox:列表框控件。可以包含一个或多个文本框。 # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。 # 绑定变量 lbv = tkinter.StringVar() # 与BROWSE相似,但不支持鼠标移动选中位置。 lb = tkinter.Listbox(win,selectmode=tkinter.SINGLE,listvariable=lbv) lb.pack() for item in ["good","nice","handsome","cool","vg","vn"]: # 按顺序添加 lb.insert(tkinter.END,item) # 打印当前列表中的选项 print(lbv.get()) # 设置选项 lbv.set(("1","2","3")) # 绑定事件 def myPrint(event): # event需要一个时间参数不用传参 print(lb.get(lb.curselection())) lb.bind('<Double-Button-1>',myPrint) # 点两下-按钮-鼠标左键 # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
说明3:
Listbox里诶包控件。可以包含一个或多个文本框。
图示3:
实例3:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 # win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Listbox:列表框控件。可以包含一个或多个文本框。 # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。 # EXTENDED:可以使Listbox支持shift和control,实现连选和多选。 lb = tkinter.Listbox(win,selectmode=tkinter.EXTENDED) for item in ["good","nice","handsome","cool","vg","vn","good1","nice1","handsome1","cool1","vg1","vn1","good3","nice3","handsome3","cool3","vg3","vn3"]: # 按顺序添加 lb.insert(tkinter.END,item) # 滚动条 sc = tkinter.Scrollbar(win) sc.pack(side=tkinter.RIGHT,fill=tkinter.Y) lb.configure(yscrollcommand=sc.set) lb.pack(side=tkinter.LEFT,fill=tkinter.BOTH) # 额外给属性赋值 sc['command'] = lb.yview # command是这个数据类型中的键名,赋值给给内容 # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
说明4:
MULTIPLE支持多选。
图示4:
实例4:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 # win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Listbox:列表框控件。可以包含一个或多个文本框。 # 所用:在Listbox小窗口显示一个字符串。常用于目录选择。 # MULTIPLE:支持多选。 lb = tkinter.Listbox(win,selectmode=tkinter.MULTIPLE) lb.pack() for item in ["good","nice","handsome","cool","vg","vn","good1","nice1","handsome1","cool1","vg1","vn1","good3","nice3","handsome3","cool3","vg3","vn3"]: # 按顺序添加 lb.insert(tkinter.END,item) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
8. Scale控件:
说明1:
供用户通过拖拽指示器改变变量的值。可以说也可以竖直。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # 供用户通过拖拽指示器改变变量的值。可以水平,也可以竖直 # orient=tkinter.HORIZONTAL/VERTICAL 水平/竖直拖拽,默认是竖直的 # lenght:水平时表示宽度,顺直时表示高度 # tickinterval 选择值将会为该值的倍数 scale = tkinter.Scale(win,from_=0,to=100,orient=tkinter.VERTICAL,tickinterval=10,length=200) scale.pack() # 设置值 scale.set(20) # 获取值 def showNum(): print(scale.get()) tkinter.Button(win,text="按钮",command=showNum).pack() print(scale.get()) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
9. Spinbox控件:
说明1:
数值范围控件。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Spinbox:数值范围控件 # increment=5:步长,默认为1 # values:最好不要from_/to一起使用。value=(0,2,4,6,8) # command:只要值改变就会执行对应的方法 # 添加方法 def update(): print(v.get()) # 绑定变量 v = tkinter.StringVar() sp = tkinter.Spinbox(win,from_=0,to=100,increment=1,textvariable=v,command=update) sp.pack() # 设置值 v.set(20) # 取值 print(v.get()) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
10. Menu控件:
说明1:
菜单控件。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Menu:顶层菜单 # 菜单条 menubar = tkinter.Menu(win) # 设置菜单 win.config(menu=menubar) # 设置命令方法 def func(): print("Thomas is a good man") # 创建一个菜单选项 menu1 = tkinter.Menu(menubar,tearoff=False) # 给菜单选项添加内容 for item in ["Python","C","C++","OC","Swift","C#","shell","Java","JS","PHP","汇编","NodeJS","退出"]: if item == "退出": # 添加分割线 menu1.add_separator() menu1.add_command(label=item,command=win.quit) else: menu1.add_command(label=item,command=func) # 向菜单条上添加菜单选项 menubar.add_cascade(label="语言",menu=menu1) # 在创建一个 menu2 = tkinter.Menu(menubar,tearoff=False) menu2.add_command(label="red") menu2.add_command(label="blue") menubar.add_cascade(label="颜色",menu=menu2) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
说明2:
图示2:
实例2:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Menu:顶层菜单 # 菜单条 menubar = tkinter.Menu(win) menu = tkinter.Menu(menubar,tearoff=False) # 给菜单选项添加内容 for item in ["Python","C","C++","OC","Swift","C#","shell","Java","JS","PHP","汇编","NodeJS","退出"]: menu.add_command(label=item) menubar.add_cascade(label="语言",menu=menu) # 板顶鼠标右键 def showMenu(event): # menubar.post(event.x_root,event.y_root) win.bind("<Button-2>",showMenu) # 2是滚轮,3是右键,1是左键 # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
11. Combobox下拉控件:
说明1:
下拉控件。
图示1:
实例1:
import tkinter from tkinter import ttk # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Combobox:下拉控件 # 绑定变量 cv = tkinter.StringVar() com = ttk.Combobox(win,textvariable=cv) com.pack() # 设置下拉数据 com["value"] = ("黑龙江","吉林","辽宁") # 设置默认值 com.current(0) # 绑定事件 def func(event): print(com.get()) # print("Thomas is a good man") com.bind("<<ComboboxSelected>>",func) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
12. Frame控件:
说明1:
在屏幕上显示矩形区域,多作为容器控件。是按照纵向区域来选择的。
图示1:
实例1:
import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+100") #格式:400x400表示大小,200和0表示位置 # Frame:框架控件 # 在屏幕上显示一个矩形区域,多作为容器控件。是按照纵向区域来选的。 frm = tkinter.Frame(win) frm.pack() # left frm_l = tkinter.Frame(frm) tkinter.Label(frm_l,text="左上",bg="pink").pack(side=tkinter.TOP) tkinter.Label(frm_l,text="左下",bg="blue").pack(side=tkinter.TOP) # left放置 frm_l.pack(side=tkinter.LEFT) # right frm_r = tkinter.Frame(frm) tkinter.Label(frm_r,text="右上",bg="red").pack(side=tkinter.TOP) tkinter.Label(frm_r,text="右下",bg="yellow").pack(side=tkinter.TOP) # right放置 frm_r.pack(side=tkinter.RIGHT) # 保持循环不让窗口关闭__编程尾部 win.mainloop()
备注:
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。