canvas.bind 是否在 while 循环中工作
Does canvas.bind work in a while loop
我在 Python 3.4.4 中有一个使用 Tkinter 的程序,它应该在屏幕周围移动一个正方形。
不幸的是,canvas.bind
在 while 循环内似乎不起作用,但它需要在 while 循环内,否则方块不会移动。这是因为每次循环运行时,我在技术上绘制一个具有不同 x、y、x1 和 y1 坐标的新方块,绑定是使方块根据箭头键在每个方向上移动的原因。
代码如下:
from tkinter import *
import time, random
tk = Tk()
canvas = Canvas(tk, width = 1000, height = 1000)
canvas.pack()
def move(event):
if event.keysym == 'Up':
y-=10
y1-=10
elif event.keysym == 'Down':
y+=10
y1+=10
elif event.keysym == 'Right':
x+=10
x1+=10
elif event.keysym == 'Left':
x+=10
x1+=10
background = canvas.create_rectangle(0, 0, 1000, 1000, fill = 'orange') #draws background
ranNum=random.random()*960 #Creates a random number
ranNum1=random.random()*960 #Creates a random number
food = canvas.create_rectangle(ranNum, ranNum1, ranNum + 15, ranNum1 + 15, fill='green') #creates food
r1 = None
o = 0
length = 4
x = 500
y = 500
x1 = 515
y1 = 515
while o < length:
if canvas.find_overlapping(ranNum, ranNum, ranNum + 15, ranNum1 + 15) == True:
x+=5
y+=5
x1+=5
y1+=5
canvas.delete(food)
r=canvas.create_rectangle(x, y, x1, y1, fill = 'blue')
canvas.bind('<KeyPress-Up>', move )
canvas.bind('<KeyPress-Down>', move)
canvas.bind('<KeyPress-Left>', move)
canvas.bind('<KeyPress-Right>', move)
time.sleep(.0)
canvas.delete(r1)
tk.update()
r1 = r
不要更改 x 或 y,每次更改都需要 canvas 项目配置
我在 Python 3.4.4 中有一个使用 Tkinter 的程序,它应该在屏幕周围移动一个正方形。
不幸的是,canvas.bind
在 while 循环内似乎不起作用,但它需要在 while 循环内,否则方块不会移动。这是因为每次循环运行时,我在技术上绘制一个具有不同 x、y、x1 和 y1 坐标的新方块,绑定是使方块根据箭头键在每个方向上移动的原因。
代码如下:
from tkinter import *
import time, random
tk = Tk()
canvas = Canvas(tk, width = 1000, height = 1000)
canvas.pack()
def move(event):
if event.keysym == 'Up':
y-=10
y1-=10
elif event.keysym == 'Down':
y+=10
y1+=10
elif event.keysym == 'Right':
x+=10
x1+=10
elif event.keysym == 'Left':
x+=10
x1+=10
background = canvas.create_rectangle(0, 0, 1000, 1000, fill = 'orange') #draws background
ranNum=random.random()*960 #Creates a random number
ranNum1=random.random()*960 #Creates a random number
food = canvas.create_rectangle(ranNum, ranNum1, ranNum + 15, ranNum1 + 15, fill='green') #creates food
r1 = None
o = 0
length = 4
x = 500
y = 500
x1 = 515
y1 = 515
while o < length:
if canvas.find_overlapping(ranNum, ranNum, ranNum + 15, ranNum1 + 15) == True:
x+=5
y+=5
x1+=5
y1+=5
canvas.delete(food)
r=canvas.create_rectangle(x, y, x1, y1, fill = 'blue')
canvas.bind('<KeyPress-Up>', move )
canvas.bind('<KeyPress-Down>', move)
canvas.bind('<KeyPress-Left>', move)
canvas.bind('<KeyPress-Right>', move)
time.sleep(.0)
canvas.delete(r1)
tk.update()
r1 = r
不要更改 x 或 y,每次更改都需要 canvas 项目配置