目录
一、Lable
Label 组件用于在界面上输出描述性的标签,这可以使用 Label 组件的文本输出功能来简单实现。
但是 Label 组件还可以显示图片,其中PhotoImage() 方法传入的图片只支持 .gif 格式的
1.文字图片分离
from tkinter import * #把Tkinter模块里所有的东西都导进来了
root = Tk()
#在字符串里面加上\n可以分两行显示
#justify选项可以设置左对齐,右对齐。默认是CENTER居中
#padx设置左右边界的距离,pady设置左右边界的距离
textLabel = Label(root, text='天生我材必有用', justify=LEFT, padx=10)
#pack设置布局
textLabel.pack(side=LEFT)
#实例化PhotoImage就可以得到一个图片对象.传入想要的图片路径就可以了,只支持GIF
#image的值是tkinter的图片对象
photo = PhotoImage(file=r"C:\image\2.gif")
imgLabel = Label(root, image=photo)
#pack设置布局
imgLabel.pack(side=RIGHT)
mainloop()
2.文字在图片上面
from tkinter import *
root = Tk()
photo = PhotoImage(file=r"C:\image\cat_200_200.gif")
theLabel = Label(root,
text="天生我材必有用",
justify=LEFT,
image=photo,
compound=CENTER, #混合属性
font=("宋体", 20), #设置字体("字体",字号)
fg="white")
theLabel.pack()
mainloop()
二、Frame
frame相当于一个局部的窗体,可以用来装载其它控件
使用grid能让你更容易把握控件的位置,你可以指定它出现在几行几列,是否跨行跨列,跨几行等等
import tkinter
def pyFrame():
root=tkinter.Tk()
frame1 =tkinter.Frame(root,width=50,height=50)
frame1.pack(fill=tkinter.X)
#标签
lable1=tkinter.Label(frame1,text='您的名字: ')
lable1.grid(row=1,column=0)
#文本框
text=tkinter.Text(frame1,width=10, height=2)
text.grid(row=1,column=1)
#按钮触发事件
def show():
text.insert(tkinter.INSERT, '移网核心\n')
language=tkinter.Button(frame1,text="确定",command=show)
language.grid(row=2,column=1)
tkinter.mainloop()
三、Labelframe
实际上就是添加了 Label 的 Frame
import tkinter
def pyLabelframe():
root = tkinter.Tk()
#padx为左右边距 pady为上下边距
#单选Radiobutton
group = tkinter.LabelFrame(root, text='告警类别:', padx=5, pady=5)
group.pack(padx=10, pady=10)
LANGS = [
('小区告警', 1),
('断站告警', 2),
('高频告警', 3),
('告警分析', 4)]
v = tkinter.IntVar()
for lang, num in LANGS:
b = tkinter.Radiobutton(group, text=lang, variable=v, value=num)
b.pack(anchor=tkinter.W)
#复选Checkbutton
group = tkinter.LabelFrame(root, text='查询条件:', padx=5, pady=5)
group.pack(padx=10, pady=10)
LANGS = ['发生时间','恢复时间','站点名称(局向)',]
v = []
for lang in LANGS:
v.append(tkinter.IntVar())
b = tkinter.Checkbutton(group, text=lang, variable=v[-1])
b.pack(anchor=tkinter.W)
tkinter.mainloop()
四、PanedWindow
PanedWindow(窗格)组件跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 允许让用户调整应用程序的空间划分
def pyPanedWindow():
'''设置第1个panedwindow'''
#orient指定窗格的分布方式;HORIZONTAL(横向分布)和VERTICAL(纵向分布)
m1=tkinter.PanedWindow(orient=tkinter.VERTICAL,showhandle=True, sashrelief=tkinter.SUNKEN)
#填充告诉窗口小部件,扩展告诉所有小部件
#m1.pack(fill=tkinter.BOTH,expand=0)
m1.grid(row=1, column=0, sticky=tkinter.W, padx=5, pady=5)
#add(child, **options)--添加一个新的子组件到窗格中
top=tkinter.Label(m1,text='高频告警')
m1.add(top)
middle=tkinter.Label(m1,text='小区告警')
m1.add(middle)
bottom=tkinter.Label(m1,text='断站告经')
m1.add(bottom)
'''设置第2个panedwindow'''
m2=tkinter.PanedWindow(orient=tkinter.VERTICAL,showhandle=True, sashrelief=tkinter.SUNKEN)
#m2.pack(fill=tkinter.BOTH,expand=0)
m2.grid(row=1, column=2, sticky=tkinter.W, padx=5, pady=5)
left_top=tkinter.Label(m2,text='断站未恢复')
m2.add(left_top)
left_bottom=tkinter.Label(m2,text='小区未恢复')
m2.add(left_bottom)
tkinter.mainloop()