【问题标题】:How do i make python detect a key press? [duplicate]我如何让python检测按键? [复制]
【发布时间】:2021-07-21 09:32:48
【问题描述】:

我希望这段代码在按下按钮时打招呼 我使用 replit.com 或 repl.it 它显示为错误:

File "main.py", line 18, in intro
if keyboard.KEY_DOWN("a"):
TypeError: 'str' object is not callable 

我正在尝试在 python 上制作独占游戏,但不断出现此类错误

import tkinter as tk
from tkinter import *
import os
import random
import math
import pygame
from pygame.locals import * 
import sys
from sys import exit
import keyboard
from keyboard import *
window = pygame.init()
print("Wellcome to Math monopoply!!!\n")
time.sleep(1)
def intro():
  print("Hi")
  if keyboard.KEY_DOWN("a"):
    print("hi")
intro() 

【问题讨论】:

  • 错误指出keyboard.KEY_DOWN对象是一个字符串,而不是一个函数。所以你不能用“a”作为参数来调用它。
  • 看看这个问题能不能帮到你:stackoverflow.com/questions/16044229/…

标签: python pygame keyboard


【解决方案1】:

可以使用pygame.key.get_pressed() 检测当前是否按住某个键。 pygame.key.get_pressed() 返回一个包含每个键状态的列表。如果某个键被按住,则该键的状态为True,否则为False

keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
    # [...]

键盘事件(请参阅pygame.event 模块)仅在按键状态更改时发生一次。每次按下某个键时,KEYDOWN 事件就会发生一次。您需要应用程序循环和事件循环来处理事件:

# application loop
run = True
while run:

    # event loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a: 
                print("Hi")    

【讨论】:

    【解决方案2】:

    这可能会有所帮助

    import pygame #Import pygame
    import sys #
    pygame.init() #Initialise it
    
    window = pygame.display.set_mode((1000,800)) #Create a 1000x800 window
    
    while True: #while loop
        for event in pygame.event.get():
            if event.type == pygame.QUIT: #if the user presses the 'X' button
                pygame.quit() #De= initialise pygame
                sys.exit() #Exit
            if event.type == pygame.KEYDOWN: #if a key is pressed down
                if event.key == pygame.K_a: 
                    print("Hi") 
    

    您可以在此处阅读有关pygame.event.get() 的更多信息

    【讨论】:

      猜你喜欢
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 2021-10-23
      • 2015-07-14
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多