6

私は、Python 3.3.1 を使用して、本 Python for Absolute Beginners からプログラミングを行っています。

次のコードを使用して画面にテキストを追加しようとしています。私は Python 3.3.1 にとどまる必要がありますが、本のコードは Python 2.X 用だと思います。

from livewires import games, color

class Pizza(games.Sprite):
    """A falling pizza"""
    def __init__(self, screen, x,y, image, dx, dy):
        """Initialise pizza object"""
        self.init_sprite(screen = screen, x = x, y = y, image = image, dx = dx, dy = dy)

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

#main

my_screen = games.Screen(SCREEN_WIDTH, SCREEN_HEIGHT)

wall_image = games.load_image("wall.jpg", transparent = False)
pizza_image = games.load_image("pizza.jpg")
my_screen.set_background(wall_image)
games.Text(screen = my_screen, x = 500, y = 30, text = "Score: 1756521", size = 50, color = 

my_screen.mainloop()

ただし、このプログラムを実行するとエラーが発生します (以下を参照)。

  games.Text(screen = my_screen, x = 500, y = 30, text = "Score: 1756521", size = 50, color = color.black)
TypeError: __init__() got an unexpected keyword argument 'text'

お役に立てれば幸いです

4

1 に答える 1

1

コメントで返信しましたが、完全な回答で詳しく説明すると思いました。

私が提案したように、 livewires games.py モジュールのソースコードを見てきました。

class Text(Object, ColourMixin):
    """
    A class for representing text on the screen.

    The reference point of a Text object is the centre of its bounding box.
    """

    def __init__(self, screen, x, y, text, size, colour, static=0):
        self.init_text (screen, x, y, text, size, colour, static)
        .........

ご覧__init__()のとおり、Text クラスの for は text というキーワード引数を想定していません。代わりに、一連の位置引数が必要です。

したがって、コードは次のようになります

games.Text(my_screen, 500, 30, "Score: 1756521", 50, color.black)

編集:

2rs2ts で指摘されているように、すべての引数名を指定すると、キーワード引数を位置引数に提供できます。ただし、color ではなくキーワード color を使用したため、コードは失敗しました。したがって、以下も機能するはずです(ただし、位置引数の使用をお勧めします)

games.Text(screen=my_screen, x=500, y=30, text="Score: 1756521", size=50, colour=color.black)

PEP8によると、「キーワード引数またはデフォルトのパラメーター値を示すために使用する場合、= 記号の周りにスペースを使用しないでください」という注意も必要です。

于 2014-03-03T16:38:57.227 に答える