Создание pygame.Rect терпит неудачу при использовании аргументов ключевого слова - PullRequest
3 голосов
/ 09 января 2020

У меня есть работающая программа, но если я изменю свой конструктор / функцию pygame.Rect (), то моя программа аварийно завершится.

Если вы посмотрите на приведенный ниже код, то

button_rect1 = pygame.Rect(450, 300, 100, 100)

работает просто отлично. Но если я изменю его на

button_rect2 = pygame.Rect(left = 450, top = 300, width = 100, height = 100)

, то получу ошибку:

Traceback (most recent call last):
  File "F:\_python_projects\workshift_logger\component_testing.py", line 31, in <module>
    button_rect = pygame.Rect(left = 450, top = 300, width = 100, height = 100)
TypeError: Argument must be rect style object
[Finished in 0.7s with exit code 1]

Единственное, что я изменил, - это добавление имен к аргументам. Почему я не могу это сделать, и как я могу изменить свой код, чтобы я мог назвать свои аргументы (я хочу назвать их для ясности - в некоторых API прямоугольники (x, y, width, height), в других они (x1, y1, x2, y2)):

Вот минимальный автономный пример:

##### Imports ######
import pygame


##### Settings #####
window_width  = 1000
window_height =  600


##### Program #####
pygame.init()
window = pygame.display.set_mode((window_width, window_height))

button_rect1 = pygame.Rect(450, 300, 100, 100)                                 # This works
button_rect2 = pygame.Rect(left = 450, top = 300, width = 100, height = 100)   # This doesn't work

1 Ответ

2 голосов
/ 09 января 2020

Поддержка аргументов ключевых слов, по крайней мере, для некоторых была добавлена ​​в 2.0.0 согласно официальной документации .

Изменено в pygame 2.0.0: добавлена ​​поддержка аргументов ключевых слов.

Так что Pygame поддерживает аргументы ключевых слов (если версия> = 2.0.0) .. по крайней мере, для некоторых.

Согласно документации здесь , вы можете создать экземпляр Rect, используя три метода:

Rect(left, top, width, height) -> Rect
Rect((left, top), (width, height)) -> Rect
Rect(object) -> Rect

Может быть, все еще нет поддержка pygame.rect, хотя есть поддержка pygame.draw.rect ... с точки зрения аргументов ключевых слов. Может быть ваша версия меньше 2.0.0

Не уверен, смог ли я ответить на вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...