python Tkinter库使用案例

本文通过两个实战案例介绍Python Tkinter库的应用:一是利用方向键移动画布上的方块;二是创建一个简单的聊天窗口,展示如何实现消息发送及界面布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()

 

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值