说明每个控件最后要加上pack().否则控件是无法显示的
1.Label标签
用法:Label(根对象,【属性列表】)
属性:
text
textvariable 变量文本
bg
bd
font
width
height
绑定变量
获取文本框中的值
设置文本框中的值
import tkinter
root=tkinter.Tk()
root.title('lesroad')# 设置窗口标题
root.geometry('500x600')# 设置窗口大小 注意:是x 不是*
root.resizable(width=1,height=0)# 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
l=tkinter.Label(root,text='hello',bg='black',fg='red',font=('Arial',24,'italic'),width=8,height=3,cursor='cross')
# 在对象中添加标签,背景,前景,字体(系列,尺寸,样式),尺寸(一个字符为1),鼠标光标形状
l.pack(side='bottom')# side=TOP或'top'都可以
root.mainloop()# 进入消息循环
趣味实例:
#功能:点击按钮标签显示'you hit me',再点一下消失
import tkinter
root = tkinter.Tk()
root.title('my windows')
root.geometry('300x300')
flag=0
def hit():
global flag
if(flag==0):
var.set('you hit me')# var.set(value)设置值 //var.get()获取值
flag=1
else:
var.set(' ')
flag=0
var=tkinter.StringVar()# 设置var为字符串变量,或用tkinter.Variable()
l=tkinter.Label(root,textvariable=var,bg='green',width=15).pack()# 最好不要接着写pack,Entry会报错
b = tkinter.Button(root,text='hit me',command=hit).pack()
root.mainloop()
插入图片(只能gif)
photo=tkinter.PhotoImage(file=r'G:\QQ截图20170920214145.gif') ip=tkinter.Label(root,image=photo) ip.pack()
2.Entry输入框
e = tkinter.Entry(root.show='#') #输入的字符全为#,默认为show=None
只能设置width,没有height
绑定变量
获取文本框中的值
设置文本框中的值
但是不会显示text中的内容
3.Text 文本框
没有text选项。
t = tkinter,Text(root)
t.insert(3.2,var)#在text第一行第一列后加上var
t.insert('insert',var) #在鼠标光标所指区域加上var
t.insert('end',var) #在最后加上var
t.delete(2,1) #删除第二行第一列之后的一个字符
趣味实例:
#输入字符串,可以在后边加,也可以在光标后加,在text中输出字符串
import tkinter
root=tkinter.Tk()
root.title('my windows')
root.geometry('300x300')
e = tkinter.Entry(root,width=30)
e.pack()
def Insert():
var=e.get()
t.insert('insert',var)# 光标后加
def End():
var=e.get()
t.insert('end',var)# 字符串后加
b1=tkinter.Button(root,text='insert point',command=Insert)
b1.pack()
b2=tkinter.Button(root,text='insert end',command=End)
b2.pack()
t=tkinter.Text(root,width=50,height=3)
t.pack()
root.mainloop()
4.Listbox列表
插入insert
删除delete
趣味实例:
#输入字符串,可以在后边加,也可以在光标后加,在text中输出字符串,详见下图
import tkinter
root=tkinter.Tk()
root.title('my windows')
root.geometry('300x300')
var=tkinter.StringVar()
l=tkinter.Label(root,width=4,textvariable=var,bg='yellow')
l.pack()
def click():
value=l.get(l.curselection())#获取光标所选
var.set(value)
b=tkinter.Button(root,text='print selection',command=click)
b.pack()
l=tkinter.Listbox(root)
L=[11,22,33,44,1,2,3,4]
for i in L:
l.insert('end',i)
l.insert(1,'first')
l.pack()
root.mainloop()
5.Checkbutton多选框
import tkinter
root=tkinter.Tk()
L=[
("a",1),
("b",2),
("c",3),
("d",4),
]
v=[]
for i,j in L:
v.append(tkinter.IntVar())
b=tkinter.Checkbutton(root,text=i,variable=v[-1]).pack()#多选框是独立的variable
root.mainloop()
6.Radiobutton单选框
import tkinter
root=tkinter.Tk()
root.geometry("200x200")
L=[
("a",1),
("b",2),
("c",3),
("d",4),
]
v=tkinter.IntVar()
for i,j in L:
b=tkinter.Radiobutton(root,text=i,variable=v,value=j)#单选框共用一个variable,但是value必须不同
b.pack(anchor='w')#左对齐,每个b都要pack
root.mainloop()
7.LabelFrame
import tkinter
root=tkinter.Tk()
root.geometry("200x200")
group = tkinter.LabelFrame(root,text="lesroad的选择是!",padx=5,pady=5)
group.pack(padx=10,pady=10)
L=[
("a",1),
("b",2),
("c",3),
("d",4),
]
v=tkinter.IntVar()
for i,j in L:
b=tkinter.Radiobutton(group,text=i,variable=v,value=j)#单选框共用一个variable,但是value必须不同
b.pack(anchor='w')#左对齐,每个b都要pack//改成同一行:b.grid(row=0,column=j)
root.mainloop()