Comment dessiner un polygone sur un tkinter, de la toile à l'aide d'une classe?
from tkinter import*
root = Tk()
shape = Canvas(root)
class GUI():
def __init__(self):
pass
def create_polygon(self, points, colour, posit):
try:
shape.delete(self.poly)
except:
pass
self.poly = shape.create_polygon(points, colour, posit)
self.poly.shape.grid(column=posit[0],row=posit[1])
polygon = GUI()
polygon.create_polygon([150,75,225,0,300,75,225,150],'yellow',[1,2])
Je suis nouveau à l'aide de tkinter
et les classes, mais je veux faire une classe très simple pour créer un polygone régulier. Le code de ce programme devrait supprimer n'importe quel polygone déjà fait et ensuite procéder à un nouveau polygone lorsque le programme est appelé, mais je reçois un message d'erreur que je ne comprends pas. Aussi, comment feriez-vous dessiner un hexagone à la place?
Traceback (most recent call last):
File "//xsvr-02/Students/10SAMP_Al/HW/polygon creator.py", line 19, in <module>
polygon.create_polygon([150,75,225,0,300,75,225,150],'yellow',[1,2])
File "//xsvr-02/Students/10SAMP_Al/HW/polygon creator.py", line 15, in create_polygon
self.poly = shape.create_polygon(points, colour, posit)
File "C:\Python34\lib\tkinter\__init__.py", line 2305, in create_polygon
return self._create('polygon', args, kw)
File "C:\Python34\lib\tkinter\__init__.py", line 2287, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: wrong # coordinates: expected an even number, got 11
Vous devez vous connecter pour publier un commentaire.
C'est juste un mauvais appel parametters.
Si vous voulez changer votre code, cette solution peut vous aider.
Classe GUI seulement hérite de la Toile et ne pas mettre en œuvre quoi que ce soit.
Pour plus d'aider à ajouter des commentaires.
create_polygon([150,75,225,0,300,75,225,150]
il commence à tracer des lignes de(150,75)
à(225,0)
et ainsi de suite, il dessine la ligne à partir du dernier point à point de départ.__init__
méthode est entièrement redondant, et pas utile, car il vous empêche de passer des arguments àCanvas.__init__()
. En le supprimant, vous permettrait de s'assurer que le__init__
hérité deCanvas
sera appelé (avec tout les arguments fournis à l'appel surGUI
)