我想在按住键的同时在屏幕上移动图像。我怎么才能得到它?

时间:2017-09-25 06:37:51

标签: python-3.x pygame

我认为它会起作用,但它并不是XD 它每次点击只移动图像一次 请帮帮我

from django.http import HttpRequest
from wkhtmltopdf.views import PDFTemplateResponse

def generate_invoice_pdf(download_pdf=False, **kwargs):
    """
    Render html to PDF
    """
    file_name = kwargs['file_name']
    template = kwargs['template']

    context = {
        "first_Name": "John",
        "last_name": "Doe"
    }

    # Create request object
    request = HttpRequest()

    params = {
        'request': request,
        'template': template,
        'filename': os.path.basename(file_name),
        'context': context,
        'cmd_options': {'margin-top': 10, },
        'show_content_in_browser': True
    }

    response = PDFTemplateResponse(**params)

    # write the rendered content to a file
    with open(file_name, "wb") as f:
        f.write(response.rendered_content)   # Part throwing the error

    if download_pdf:
        return response
    else:
        msg = 'PDF Generated: {}'.format(file_name)
        return msg

2 个答案:

答案 0 :(得分:1)

我认为您想要使用pygame.key.get_pressed(),如下所示。

for event in pygame.event.get():   
    if event.type == QUIT:
        pygame.quit()
        sys.exit()

pressed_keys = pygame.key.get_pressed()
if pressed_keys[K_RIGHT]:
    posX += velocidad
if pressed_keys[K_LEFT]:
    posX -= velocidad

event.type == pygame.KEYDOWN仅在首次按下键时捕获。 如果你想使用它,你可以切换一些属性,如your_object.movi​​ng_right = True。然后使用keyup将其关闭。

答案 1 :(得分:0)

总的来说,我认为您想要的是使用if语句检查event.key

然而,您的代码存在多个问题(结构和语法)。 event.type不会更改,因此使用while没有意义(这将永远运行并使您的程序挂起)。我不确定你对== 1比较的意图是什么,因为K_RIGHT和K_LEFT是关键代码值的任意常量。更不用说right == K_RIGHT是一个什么都不做的表达式(你的意思是right = K_RIGHT吗?)并且你得到了lef的明显拼写错误。我认为你提供的结构最接近的工作代码(假设其他代码没有显示也有效)看起来像这样:

for event in pygame.event.get():
  if event.type == QUIT:
    pygame.quit()
    sys.exit()

  if event.type == pygame.KEYDOWN:
    right = K_RIGHT
    left = K_LEFT
    if event.key == right:
        posX += velocidad
    elif event.key == left:
        posX -= velocidad