一、引入tkinter库中所有模块,简化代码
from tkinter import*
二、实例化
root = Tk()
三、基本模块
(1)title(小窗口的标题)
root.title("标题")
(2)标签:Label
#标签内容支持转义符 如 \n
Label1 = Label(root,
text="标签",
justify=Left,
padx=1)
#justify 文本的左对齐Left 右对齐Right 居中Center 默认Center
#padx 距边框长度
"""插入图片
file不支持绝对路径
Label中有图片会覆盖掉Label中的text"""
photo = PhotoImage(file="1.gif")#对tkinter中的PhotoImage模块实例化
Label2 = Label(root,image=photo)
#若想图片放到文字下面做背景
Label3 = Label(root,
text="内容",
image=photo,
compound=Center, # 混合模式,文字在图片的正上方显示
font=("xxx字体",20))#字体 和字号
Label1.pack()
Label2.pack()
Label3.pack()
(3)按钮:Button
Button(root,text="按钮名称",fg="Blue",bg="white",command=say_hi)
fg:字体颜色
bg:按钮背景颜色
command:对按钮绑定方法
(4)框架:Frame(调整组件的位置)可以理解为一个盒子在里面放Button等组件,对窗口进行总体的布局
Frame1 = Frame(root)
#在盒子里面放一个按钮
Button1 = Button(Frame1,text="按钮名称",fg="Blue",command=say_hi)
(5)复选框 Checkbutton 几个选项可以多选
v = IntVar()
C = Checkbutton(root,text="百花",variable=v)
variable在复选框中只能为1或0 选中为1
IntVar 表示v是一个整形变量 相当于C语言中的 int v
再理解:variable后面跟的是一个变量的地址,每一个复选框需要不同的地址,如果后面是同一个地址的话,选中状态将会同时变化
#循环赋予不同地址
from tkinter import *
root = Tk()
v = []
boys = ["1","2","3"]
for i in boys:
v.append(IntVar())
b = Checkbutton(root,text = i ,variable=v[-1])
b.pack()
mainloop()
单选框:Radiobutton 几个选项中只能选一个
v = IntVar()
C1 = Radiobutton(root,text="百花1",variable=v,value=1).pack()
C2 = Radiobutton(root,text="百花2",variable=v,value=2).pack()
C3 = Radiobutton(root,text="百花3",variable=v,value=3).pack()
value 值固定且唯一 ,每个Radiobutton的variable都共用一个IntVar地址 ,所以当其中一个被选中,variable的值将会变成某个value,从而实现单选
#循环创建单选框
from tkinter import *
root = Tk()
num = [("1",1),
("2",2),
("3",3)
]
v = IntVar()
for name,number in num:
b = Radiobutton(root,text = name,variable=v,value = number,indicatoron=False)
#indicatoron 控制前面的选择框 可以自己试一下 False和True
b.pack()
mainloop()
(6)标签框架 LabelFrame 就是给框架上有一个标签
#循环创建单选框
from tkinter import *
root = Tk()
group = LabelFrame(root,text="内容")
group.pack()
num = [("1",1),
("2",2),
("3",3)
]
v = IntVar()
for name,number in num:
b = Radiobutton(group,text = name,variable=v,value = number)
b.pack()
mainloop()
代码运行后:
(7)输入框:Entry
from tkinter import *
root = Tk()
v1 = StringVar()
#textVariabel 将输入的文本放在v1 show 表示用*显示 也可以用任意字符如%¥@
e = Entry(root,textVariabel = v1 ,show='*')
e.pack()
#清空输入框
e.delete(0,END)
#插入文字
e.insert(0,"文本")
(8)对每一组件进行排放
#直接在组件后面.grid(row=1,colum=1,sticky=W/E/S/N)
#类似于一个一个格子一般 row控制组件处于一行的第几个格子 column则是控制处于哪一列,sticky控制处在的方位
from tkinter import *
root = Tk()
e = Entry(root).grid(row=3,column=0,sticky=W)
e2 = Entry(root).grid(row=2,column=2,sticky=E)