GUI:人机交互图形化界面,图形页面窗口,Windows系统就是一个庞大的GUI界面,比命令行更加让人得以接受,使用更加简便
在python中的GUI界面是由tkinter提供的,使用前需导入
变量 = tk.Tk():创建一个窗口,将他实例化
变量 = geometry('长宽'):设置窗口的长宽
页面开发的最小内容:
1.导入tkinter模块
2.创建主窗口对象
3.将主窗口对象加入消息循环
import tkinter #创建主窗口对象 root = tkinter.Tk() #设置窗口大小 root.minsize(300,300) #加入一个按钮组件 #创建一个按钮组件(在内存中创建) but = tkinter.Button(root,text = "按钮1") #摆放组件 but = pack()
组件的摆放方式:
1.pack()方式 ——>方位/方向摆放
2.gird()方式 ——>网格摆放方法
3.place() ___>定位摆放方法
pack()方式:
side:设置组件相对于父组件的摆放位置
ipadx,ipady :设置组件的内部间距
padx,pady:设置多个组件之间的外部间距
expand:设置side是否失效
import tkinter #创建主窗口对象 root = tkinter.Tk() #设置窗口大小 root.minsize(300,300) #加入一个按钮组件 #创建一个按钮组件(在内存中创建) but = tkinter.Button(root,text = "按钮1") #摆放组件 but = pack(ipadx = 20) #创建组件2 btn2 = tkinter.Button(root,text = '按钮2') btn2.pack(ipady = 20) 创建一个按钮组件 but3 = tkinter.Button(root,text = "按钮3") #摆放组件 but = pack(padx = 20) but5 = tkinter.Button(root,text = "按钮5") but5.pack(fill = 'x',side = 'left')#该组件占据水平方向的最大位置 but6 = tkinter.Button(root,text = "按钮6") but6.pack(expand = 'yes',fill = 'both')#让size失效
gird()方式
row 设置行数 默认为0
column 设置列数 默认为0
rowspan 设置跨列数量
ipadx,ipady 设置组件内部间距
import tkinter #创建主窗口对象 root = tkinter.Tk() #设置窗口大小 root.minsize(300,300) #加入一个按钮组件 #创建一个按钮组件(在内存中创建) but = tkinter.Button(root,text = "按钮1") #摆放组件 but.grid(row = 0,column = 0)#设置行为0列为0 btn0 = tkinter.Button(root,text = '按钮0') btn0.grid(row =2,column = 0,columnspan = 2)#占据2行
place()
绝对定位:
x:设置左上角水平长度+++++++单位像素
y:设置距离左上角的垂直宽度
设置组件所占据的宽度
heigh:设置组件所占据的宽度
import tkinter #创建主窗口对象 root = tkinter.Tk() #设置窗口大小 root.minsize(300,300) #加入一个按钮组件 #创建一个按钮组件(在内存中创建) but = tkinter.Button(root,text = "按钮1") #摆放组件 but = place(x = ?,y = ?,width = ?,heigh = ?)#距离x(距离左上角的水平距离)多少,对于y多少#单位像素 #相对位置 but = place(relx = ?,rely = ?,width = ?,heigh = ?)#距离x(距离左上角的百分比水平距离)多少,对于y多少#单位百分比
相对定位:
relx:设置左上角水平长度(取值0-1)
rely:设置距离左上角的垂直宽度
rel设置组件所占据的宽度
relheigh:设置组件所占据的宽度
.geometry(?x?):设置界面大小
button:
bg:背景颜色
fg:字体颜色
选择框/复选框:Checkbutton
import tkinter root = tkinter.Tk() #设置显示内容tkinter变量 #设置内容 text = tkinter.StringVar() text.set('文本') #设置复选框勾选与否的值 result = tkinter.IntVar() def func(): print(result.get()) cheekbutton = tkinter.Checkbutton(root,textvariable = text,variable = result,command = func) root.mainloop()
Frame:相对于一个容器,框架
import tkinter root = tkinter.Tk() root.geometry("500x500") frame1 = tkinter.Frame(root,bg = 'red',width = 500,height = 100) frame1.pack() frame2 = tkinter.Frame(root,bg = 'green',width = 500,height = 100) frame2.pack() bun = tkinter.Button(frame1,text = '按钮') bun1 = tkinter.Button(frame2,text = '按钮') bun2 = tkinter.Button(frame1,text = '按钮') bun3 = tkinter.Button(frame1,text = '按钮') bun.pack(side = 'left') bun2.pack(side = 'left') bun3.pack(side = 'left') bun1.pack() root.mainloop()
LabelFrame:标签框架
import tkinter root = tkinter.Tk() root.geometry("500x500") frame1 = tkinter.LabelFrame(root,text = 'hahaha' ,bg = 'red',width = 500,height = 100) frame1.pack() frame2 = tkinter.LabelFrame(root,bg = 'green',width = 500,height = 100) frame2.pack() bun = tkinter.Button(frame1,text = '按钮') bun1 = tkinter.Button(frame2,text = '按钮') bun2 = tkinter.Button(frame1,text = '按钮') bun3 = tkinter.Button(frame1,text = '按钮') bun.pack(side = 'left') bun2.pack(side = 'left') bun3.pack(side = 'left') bun1.pack() root.mainloop()
Label:标签
import tkinter root = tkinter.Tk() root.geometry("500x500") label = tkinter.Label(root,text = "标签") label.pack() root.mainloop()
listbox:列表盒子
import tkinter root = tkinter.Tk() root.geometry("500x500") name = ("auy","hayaya","pox") std = tkinter.StringVar(value=name) listbox = tkinter.Listbox(root,listvariable = std) listbox.pack() root.mainloop()
文本输入框:Entry
import tkinter
root = tkinter.Tk()
entry = tkinter.Entry(root,width = 50)#width输入框的长度
password = tkinter.Entry(root)#show代表遮盖符
entry.pack()
password.pack()
root.mainloop()