Python:让按键无法正常工作的问题

时间:2019-03-03 13:28:52

标签: python tkinter

我正在制作一个带有2个移动矩形的游戏,这些矩形由按键w和s以及上下箭头控制。但是尽管它们具有相同的代码和不同的名称,但我只能让它们中的一个移动(由箭头控制的一个)。我试图弄清楚它,但是没有运气,所以我真的需要一些帮助来移动第二个。(我还尝试了我在本网站上看到的其他方式,例如keyym,但也没有用) 谢谢!

矩形代码:

class Block:
    def __init__(self, canvas, color, x1, y1):
        self.canvas = canvas
        self.id = canvas.create_rectangle(20, 10, 35, 90, fill = color)
        self.x1 = x1
        self.y1 = y1
        self.canvas.move(self.id, self.x1, self.y1)

        self.speed_1 = 0
        self.speed_2 = 0
        self.canvas.bind_all('<KeyPress-w>', self.turn_up_1)  #Not working
        self.canvas.bind_all('<KeyPress-s>', self.turn_down_1) #Not working
        self.canvas.bind_all('<KeyPress-Up>', self.turn_up_2) #working
        self.canvas.bind_all('<KeyPress-Down>', self.turn_down_2) #working

    def turn_up_1(self, evt): #Not working
        self.speed_1 = -3
    def turn_down_1(self, evt): #Not working
        self.speed_1 = 3
    def draw_1(self):
        self.canvas.move(self.id, 0, self.speed_1) #Not working

    def turn_up_2(self, evt):  #working
        self.speed_2 = -3
    def turn_down_2(self, evt): #working
        self.speed_2 = 3
    def draw_2(self):
        self.canvas.move(self.id, 0, self.speed_2) #working

block1 = Block(canvas, 'blue', 0, 0)
block2 = Block(canvas, 'red', 940, 540)

循环:

while True:
    block1.draw_1() #Not working
    block2.draw_2() #Working
    time.sleep(0.0333333333333333333333333333333333333333333333333333)
    tk.update_idletasks()
    tk.update()

0 个答案:

没有答案
相关问题