Label组件是用于在界面上输出描述的标签。
#导入tkinter模块所有内容
from tkinter import *
#创建一个主窗口,可以容纳整个GUI程序
root = Tk()
root.title("hhh")
textLabel = Label(root,text="努力努力再努力!\n努力努力再努力!!\n努力努力再努力!!!"
,justify=LEFT)
#justify选项将文本向左对齐,没有justify则文本是居中对齐
textLabel.pack(side=LEFT)
#创建一个图像Label对象
#用PhotoImage实例化一个图片的对象
photo = PhotoImage(file='C:\\Users\\W\\Desktop\\img.gif')#gif动画在你电脑上的位置,注意是双斜杠
imgLabel = Label(root, image=photo)
imgLabel.pack(side=RIGHT)
root.mainloop()
有的时候可能需要将图片和文字分开,例如将图片作为背景,文字显示在图片的上面,只需要设置compound选项即可。
from tkinter import *
root = Tk()
photo = PhotoImage(file="C:\\Users\\W\\Desktop\\background.gif")
theLable = Label(root,
text="努力努力再努力\n努力努力再努力",
image=photo,
compound=CENTER,#设置文本和图像混合的模式
font=("方正姚体",50),#设置字体和字号
fg="white")#设置文本颜色
theLable.pack()
mainloop()
Button组件用于实现一个按钮,它的绝大多数选项和Label组件是一样的。
不过Button组件有一个Label组件实现不了的功能,就是可以接受用户的信息。
Button组件有一个command选项,用于指定一个函数或者方法,当用户单击按钮的时候,Tkinter就会自动地去调用这个函数或者方法。
from tkinter import *
def callback():
var.set("努力努力再努力!")
root = Tk()
frame1 = Frame(root)
frame2 = Frame(root)
#创建一个文本label对象
var = StringVar()
var.set("")
textLabel = Label(frame1,
textvariable=var,
font=("方正姚体",10),
justify=LEFT)
textLabel.pack(side=BOTTOM)
#创建一个图像Label对象
#用PhotoImage实例化一个图片对象(支持gif图片格式)
photo = PhotoImage(file="C:\\Users\\W\\Desktop\\img.gif")
imgLabel=Label(frame1,image=photo)
imgLabel.pack(side=RIGHT)
#加一个按钮
theButton = Button(frame2,text="张艺兴",bg='pink',command=callback)
theButton.pack()
frame1.pack(padx=10,pady=10)
frame2.pack(padx=10,pady=10)
mainloop()
尝试了一下如果把frame2全部删掉,只用frame1,按钮会跑到左上角。
Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮。
from tkinter import *
root = Tk()
#需要一个Tkinter变量,用于表示该按钮是否被选中
v = IntVar()
c = Checkbutton(root,text="测试一下",variable=v)
c.pack()
#如果选项被选中,那么变量的值为1,否则为0
#可以用Label标签动态展示:
l=Label(root,textvariable=v)
l.pack()
mainloop()
from tkinter import *
root = Tk()
numbers = ["one","two","three","four"]
v=[]
for number in numbers:
v.append(IntVar())
b = Checkbutton(root,text=number,variable=v[-1])
b.pack(anchor=W)#W代表West,不加W或者其他显示位置的缩写,可能会看上去不整齐
mainloop()