我正在尝试使用tkinter在python中制作一个游戏(我真的不想学习pygame的东西),我正在使用键制作一个输入处理器。我在试着区分按键和按键
当按下一个键时,它不断地被调用,而一个按键只调用一次,直到它被释放并再次按下为止。在
numKeys = 7
UP = 0
LEFT = 1
DOWN = 2
RIGHT = 3
ENTER = 4
ESCAPE = 5
SPACE = 6
keys = [False] * numKeys
keyRegister = 0
keyFlag = False
def keyDown(event):
if event.keysym == "Up":
setKey(UP, True)
if event.keysym == "Left":
setKey(LEFT, True)
if event.keysym == "Down":
setKey(DOWN, True)
if event.keysym == "Right":
setKey(RIGHT, True)
if event.keysym == "Enter":
setKey(ENTER, True)
if event.keysym == "Escape":
setKey(ESCAPE, True)
if event.keysym == "space":
setKey(SPACE, True)
if keyRegister != 0:
keyFlag = True
keyRegister += 1
def keyUp(event):
if event.keysym == "Up":
setKey(UP, False)
if event.keysym == "Left":
setKey(LEFT, False)
if event.keysym == "Down":
setKey(DOWN, False)
if event.keysym == "Right":
setKey(RIGHT, False)
if event.keysym == "Enter":
setKey(ENTER, False)
if event.keysym == "Escape":
setKey(ESCAPE, False)
if event.keysym == "space":
setKey(SPACE, False)
keyRegister = 0
keyFlag = False
def update():
def setKey(k,b):
keys[k] = b
def isDown(k):
return keys[k]
def isPressed(k):
if keyFlag == False:
return keys[k]
我还有我的主文件,如果你看渲染函数。是我把输入部分放在哪里。在
^{pr2}$所以我不能让它正确地执行“isPressed”函数。有人知道怎么做吗?在
你的代码不能工作,因为你有一个infinte休眠循环,它从不给tkinter处理任何事件的机会。必须允许事件循环运行,以便可以处理事件。在
作为一个良好的总体指导方针,您应该:
通过使用
after
处理屏幕重画,可以解决这两个问题:相关问题 更多 >
编程相关推荐