2010-06-13 6 views
2

J'ai écrit ce code pour ouvrir une fenêtre avec Pyglet en Python ..."TypeError: tirage au sort() prend exactement 1 argument non-mot-clé (3 donné)"

import pyglet 
from pyglet import window 

class Window(pyglet.window.Window): 
    def __init__(self): 
     super(Window, self).__init__() 

     myLabel = pyglet.text.Label("Prototype") 

     windowText = myLabel.draw(Window, "Hello World", 
         font_name = "Times New Roman", 
         font_size = 36, 
         color = (193, 205, 193, 255)) 

    def on_draw(self): 
     self.clear() 
     self.label.draw() 

if __name__ == '__main__': 
    window = Window() 
    pyglet.app.run() 

cependant à chaque fois que je cours, je obtenir cette erreur:

TypeError: draw() takes exactly 1 non-keyword argument (3 given) 

le AFAIK « (3 donné) » signifie que le problème est avec les arguments de FONT_SIZE ou de couleur, mais je ne suis pas sûr. Quelqu'un pourrait-il expliquer ce qui ne va pas et m'aider à faire ce travail?

Répondre

1

Les trois arguments non-mots-clés que vous avez indiqués sont l'instance d'objet, Window et "Hello World". Il attend seulement l'instance d'objet. Vérifiez à nouveau les documents pour quels arguments la méthode draw() prend. Pensez à imprimer le repr() de myLabel pour que vous sachiez de quel type il s'agit.

0

Je n'ai jamais utilisé pyglet mais selon la documentation draw ne prend aucun paramètre.

Cependant the constructor ne prend ces paramètres pour les éléments suivants serait légal:

label = pyglet.text.Label('Hello, world', 
          font_name='Times New Roman', 
          font_size=36, 
          x=10, y=10) 

De here.

1

Les trois arguments non-mot-clé que vous passez à draw() sont myLabel (implicite, devient self), Window et "Hello World". La documentation de cette méthode est here. Etes-vous sûr de ne pas avoir l'intention de faire quelque chose de plus comme ça?

myLabel = pyglet.text.Label("Hello World") 
Questions connexes