Tkinter Canvas 消息绑定

Tkinter Canvas 消息绑定

主要思路是可以利用系统接收到键盘的消息,做出反应。例如,当发生按下右移键时,可以控制球往右边移动,例如,我们可以如下这样设计函数。

def ballMove(event):
    canvas.move(1, 5, 0)    # 假设移动5像素

在程序设计函数中对于按下右移键移动球可以如下这样设计。

def ballMove(event):
    if event.keysym == 'Right':
        canvas.move(1, 5, 0)

对于主程序而言需使用canvas.bind_all( )函数,执行消息绑定工作,它的写法如下。

canvas.bind_all('<KeyPress-Left>', ballMove)  #左移键
canvas.bind_all('<KeyPress-Right>', ballMove) #右移键
canvas.bind_all('<KeyPress-Up>', ballMove)    #上移键
canvas.bind_all('<KeyPress-Down>', ballMove)  #下移键

上述函数主要是告知程序所接收到键盘的消息是什么,然后调用ballMove( )函数执行键盘消息的工作。

示例1

程序开始执行时,在画布中央有一个红球,可以按键盘上的向右、向左、向上、向下键,往右、往左、往上、往下移动球,每次移动5个像素。

from tkinter import * 
import time
def ballMove(event):
    if event.keysym == 'Left':   # 左移 ################################
        canvas.move(1, -5, 0)
    if event.keysym == 'Right':  # 右移
        canvas.move(1, 5, 0)
    if event.keysym == 'Up':     # 上移
        canvas.move(1, 0, -5)
    if event.keysym == 'Down':  # 左移
        canvas.move(1, 0, 5)
tk = Tk()
tk.title("apidemos.com")
canvas = Canvas(tk,width=500, height=300)  # 建立画布
canvas.pack()
canvas.create_oval(225,125,275,175,fill="red")
canvas.bind_all('<KeyPress-Left>',ballMove)
canvas.bind_all('<KeyPress-Right>',ballMove)
canvas.bind_all('<KeyPress-Up>',ballMove)
canvas.bind_all('<KeyPress-Down>',ballMove)
mainloop()
# tk.mainloop()

输出:

Tkinter Canvas 消息绑定

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程