环境:python2.7.6
一、基本窗口
import Tkinter as tk ##导入
window =tk.Tk() ##设置窗口
window.title("mywindow") ##设置窗口名字
window.geometry('200x100') ##设置窗口大小
二、标签tk.Label
l = tk.Label(window ##每个标签自动继承window
##,text = "OMG! this is TK"
,textvariable=var ##标签中的内容
,bg = "green" ##标签背景颜色
,font=("Arial",12) ##标签字体
,width= 15 ##标签长度
,height = 2) ## 标签高度
l.pack() ##显示标签,pack是一种放置方式
三、按钮tk.Button
def hit_me():
global on_hit ##全局变量定义hit
if on_hit == False:
on_hit = True
print("in ")
var.set("you hit me")
else:
on_hit = False
var.set(" ")
b = tk.Button(window,
text = "hit me", ##按钮上面的字
width = 15, ##按钮的宽度
height= 2, ##按钮的高度
command = hit_me)##按下去以后触发的函数
b.pack()
示例:
四、输入框tk.Entry
# -*- coding: utf8 -*-
import Tkinter as tk
window = tk.Tk()
window.title("my window")
window.geometry('200x200')
e = tk.Entry(window,show="*") #show ="*" 显示* ,show= None 显示写入值
e.pack()
def insert_point():
var = e.get() ##得到输入字符
t.insert("insert",var) ##插入到光标位置
def insert_end():
var = e.get()
t.insert(1.1,var) ##插入到尾部“end”,插入1.1(1行1列)
b1 = tk.Button(window,text ="insert_point",width = 15,
height= 2,command = insert_point)
b1.pack()
b2 = tk.Button(window,text ="insert_end",width = 15,
height= 2,command = insert_end)
b2.pack()
t = tk.Text(window,height= 2)
t.pack()
window.mainloop()
示例:
五、列表tk.Listbox
# -*- coding: utf8 -*-
import Tkinter as tk
window = tk.Tk()
window.title("my window")
window.geometry('200x200')
var1 = tk.StringVar()
l =tk.Label(window,bg="yellow",width=4,textvariable = var1)
l.pack()
#获取列表的值,并把它放到标签中
def print_selection():
value = lb.get(lb.curselection())
var1.set(value)
b1 = tk.Button(window,text ="print_selection",width = 15,
height= 2,command =print_selection)
b1.pack()
var2 = tk.StringVar()
var2.set((11,22,33,44)) ##设置列表值
lb = tk.Listbox(window,listvariable= var2)
list_items = [1,2,3,4]
for item in list_items: ##循环列表插入
lb.insert("end",item)
lb.insert(1,"first") ##列表插入
lb.insert(2,"second")
lb.delete(2) ##列表删除
lb.pack()
window.mainloop()
示例:
六、单选按钮
# -*- coding: utf8 -*-
import Tkinter as tk
window = tk.Tk()
window.title("my window")
window.geometry('400x400')
var = tk.StringVar()
l =tk.Label(window,bg="yellow",width=20,text = "empty")
l.pack()
#单选按钮的值加到标签上
def print_selection():
l.config(text= "you have selected " + var.get())
r1 = tk.Radiobutton(window,text="OptionA", #设置单选按钮
variable =var,
value = "A",
command = print_selection)
r1.pack()
r2 =tk.Radiobutton(window,text="OptionB",
variable =var,
value = "B",
command = print_selection)
r2.pack()
r3 =tk.Radiobutton(window,text="OptionC",
variable =var,
value = "C",
command = print_selection)
r3.pack()
window.mainloop()
示例:
七、比尺tk.Scale
# -*-coding: utf8 -*-
importTkinter as tk
window =tk.Tk()
window.title("mywindow")
window.geometry('400x400')
l =tk.Label(window,bg="yellow",width=20,text = "empty")
l.pack()
defprint_selection(v):
l.config(text= "you have selected" + v)
s =tk.Scale(window,
label = "try me", ##名字
from_= 5, ##取值范围:开始
to = 11, ##取值范围:结束
orient = tk.HORIZONTAL,##横向的
length = 200, ##长度
showvalue = 0, ##移动的时候显示数值
tickinterval = 3, ##标签的单位长度(相隔几个显示)
resolution = 0.01, ##保留几位小数
command = print_selection
)
s.pack()
window.mainloop()
示例:
八、多选按钮
# -*-coding: utf8 -*-
importTkinter as tk
window =tk.Tk()
window.title("mywindow")
window.geometry('400x400')
l =tk.Label(window,bg="yellow",width=20,text = "empty")
l.pack()
defprint_selection():
if (var1.get() ==1)&(var2.get() ==0):
l.config(text="I love onlyPython")
elif(var1.get() ==0)&(var2.get() ==1):
l.config(text="I love onlyC++")
elif(var1.get() ==0)&(var2.get() ==0):
l.config(text="I do not loveeither")
else:
l.config(text="I love both")
var1 =tk.IntVar()
var2 =tk.IntVar()
c1 =tk.Checkbutton(window,text= "Python",
variable = var1,
onvalue = 1, ##选中为1
offvalue = 0, ##未选中为0
command = print_selection)
c2 =tk.Checkbutton(window,text= "C++",
variable = var2,
onvalue = 1,
offvalue = 0,
command = print_selection)
c1.pack()
c2.pack()
window.mainloop()
示例:
九、画布tk.Canvas
# -*-coding: utf8 -*-
importTkinter as tk
window =tk.Tk()
window.title("mywindow")
window.geometry('400x400')
canvas =tk.Canvas(window,bg="blue",
height= 100,
width = 200)
x0,y0,x1,y1= 50,50,80,80
line =canvas.create_line(x0,y0,x1,y1)
oval =canvas.create_oval(x0,y0,x1,y1,fill ='red')
arc =canvas.create_arc(x0+30,y0+30,x1+30,y1+30,start = 0,extent= 180)
rect =canvas.create_rectangle(100,30,100+20,30+20)
canvas.pack()
defmoveit():
canvas.move(rect,0,2)
b =tk.Button(window,text="move",command = moveit).pack()
window.mainloop()
示例:
十、下拉菜单tk.Menu
# -*-coding: utf8 -*-
importTkinter as tk
window =tk.Tk()
window.title("mywindow")
window.geometry('200x200')
l =tk.Label(window,text="",bg="yellow")
l.pack()
counter= 0
defdo_job():
global counter
l.config(text = "do" +str(counter))
counter+= 1
menubar= tk.Menu(window) #一级菜单
filemenu= tk.Menu(menubar,tearoff = 0)
menubar.add_cascade(label="file",menu = filemenu) #二级菜单
filemenu.add_command(label= "NEW",command= do_job)
filemenu.add_command(label= "Open",command= do_job)
filemenu.add_command(label= "Save",command= do_job)
filemenu.add_separator() #加一个分割线
filemenu.add_command(label= "Exit",command= window.quit)
submenubar= tk.Menu(filemenu)
filemenu.add_cascade(label="Import",menu=submenubar,underline= 0 ) #三级菜单
submenubar.add_command(label="Submenul",command=do_job)
editmenubar= tk.Menu(window)
menubar.add_cascade(label="Edit",menu = editmenubar)
editmenubar.add_command(label= "Cut",command= do_job)
editmenubar.add_command(label= "Copy",command= do_job)
editmenubar.add_command(label= "Paste",command= do_job)
window.config(menu= menubar)
window.mainloop()
示例:
十一、框架布局tk.Frame
# -*-coding: utf8 -*-
importTkinter as tk
window =tk.Tk()
window.title("mywindow")
window.geometry('200x200')
tk.Label(window,text="onthe window").pack()
frm =tk.Frame(window)
frm.pack()
frm_l = tk.Frame(frm)
frm_r =tk.Frame(frm)
frm_l.pack(side= "left")
frm_r.pack(side= "right")
tk.Label(frm_l,text="onthe frm_l1").pack()
tk.Label(frm_l,text="onthe frm_l2").pack()
tk.Label(frm_r,text="onthe frm_r1").pack()
window.mainloop()
示例:
十二、弹窗tkMessageBox.showinfo(py2和py3方式略有不同)
# -*-coding: utf8 -*-
importTkinter as tk
importtkMessageBox
window =tk.Tk()
window.title("mywindow")
window.geometry('200x200')
defhit_me():
##tk.messagebox.showinfo(title="Hi",message="hahaha") #py3
##tk.messagebox.showwarrning(title="Hi",message="nonono")
tkMessageBox.showinfo(title='aaa', message= "abc") #py2
tk.Button(window,text="hitme",command= hit_me).pack()
window.mainloop()
示例:
十三、三种放置方式(pack、grid、place)
# -*-coding: utf8 -*-
importTkinter as tk
window =tk.Tk()
window.title("mywindow")
window.geometry('200x200')
##pack
#tk.Label(window,text=1).pack(side="top")
#tk.Label(window,text=1).pack(side="bottom")
#tk.Label(window,text=1).pack(side="left")
#tk.Label(window,text=1).pack(side="right")
##grid
#for iin range(4):
# for j in range(3):
# tk.Label(window,text= 1).grid(row=i,column= j,padx = 10,pady = 10)
#place
tk.Label(window,text=1).place(x= 10,y= 100,anchor="nw")
window.mainloop()
示例:
参考:https://morvanzhou.github.io/