python Tkinter是内置的库,无需安装
用具体的实例讲解Tkinter库使用:
用上下左右方向键以及回车对红色方格做出相应的移动
# -*- coding: utf-8 -*-
from Tkinter import *
def main():
#创建tk对象
tk=Tk()
#创建画布
canvas=Canvas(tk,width=400,height=400)
canvas.pack()
#在画布上创建文字
canvas.create_text(200,40,text="welcome to Tkinter",fill="blue",font=("Times",16))
#在画布上创建图片,tkinter只能显示gif文件
myImage=PhotoImage(file="timg.gif")
canvas.create_image(10,70,anchor=NW,image=myImage)#以(10,70)为西北角显示图像
#move中的第一个参数表示移动canvas里的第几个对象
def moverectangle(event):
if event.keysym == "Up":
canvas.move(3,0,-5)
elif event.keysym=="Down":
canvas.move(3,0,5)
elif event.keysym=="Left":
canvas.move(3,-5,0)
elif event.keysym=="Right":
canvas.move(3,5,0)
else:
canvas.move(3,5,5)
canvas.create_rectangle(200,200,220,220,fill="red")
#让tkinter监视KeyPress事件,当该事件发生时调用moverectangle函数
#bind_all第2个参数是回调函数,不能接收参数传递,所以在函数内部建立回调函数
canvas.bind_all("<KeyPress-Up>",moverectangle)
canvas.bind_all("<KeyPress-Down>", moverectangle)
canvas.bind_all("<KeyPress-Left>",moverectangle)
canvas.bind_all("<KeyPress-Right>", moverectangle)
canvas.bind_all("<KeyPress-Return>",moverectangle)
tk.mainloop()
main()
实例2:利用Tkinter库创建聊天界面
# -*- coding: utf-8 -*-
from Tkinter import *
from time import *
def main():
def sendMsg():
strtime="我:"+strftime("%Y-%m-%d %H:%M:%S",localtime())+"\n"
txtMsgList.insert(END,strtime,'greencolor')
#0.0是0行0列到END,表示全部,END表示插入末端
txtMsgList.insert(END,txtMsg.get('0.0',END))
txtMsg.delete('0.0',END)
def cancelMsg():
txtMsg.delete('0.0',END)
def sendMsgEvent(event):
if event.keysym=="Return":
sendMsg()
tk=Tk()
tk.title("python聊天室")
# 创建frame容器
frameLT = Frame(width=500, height=320)
frameLC = Frame(width=500, height=150,bg="red")
frameLB = Frame(width=500, height=30)
frameRT = Frame(width=200, height=500)
#创建控件
txtMsgList=Text(frameLT)
#配置标签tag的属性,第一个参数为tag名字,第2个参数为前景色,背景色为默认白色
txtMsgList.tag_config("greencolor", foreground='#008C00')
txtMsg=Text(frameLC)
txtMsg.bind_all("<KeyPress-Return>",sendMsgEvent)
btnSend=Button(frameLB,text="send",width=8,command=sendMsg)
btnCancel=Button(frameLB,text="cancel",width=8,command=cancelMsg)
myImage=PhotoImage(file="python.gif")
label=Label(frameRT,image=myImage)
#窗体布局
frameLT.grid(row=0, column=0, columnspan=2,padx=1,pady=5)
frameLC.grid(row=1, column=0, columnspan=2)
frameLB.grid(row=2, column=0, columnspan=2)
frameRT.grid(row=0, column=2, rowspan=3,padx=5,pady=4)
# 固定大小
frameLT.grid_propagate(0)
frameLC.grid_propagate(0)
frameLB.grid_propagate(0)
frameRT.grid_propagate(0)
#控件布局
btnSend.grid(row=2, column=0)
btnCancel.grid(row=2, column=1)
label.grid()
txtMsgList.grid()
txtMsg.grid()
#主事件循环
tk.mainloop()
main()