Как настроить многоугольник на холсте tkinter с помощью класса?

Это мой текущий рабочий код, но я хочу добавить функцию, которая изменит цвет формы во время «основного цикла»:

from Tkinter import*

root = Tk()

class GUI(Canvas):
    '''inherits Canvas class (all Canvas methodes, attributes will be accessible)
   You can add your customized methods here.
   '''
    def __init__(self,master,*args,**kwargs):
        Canvas.__init__(self, master=master, *args, **kwargs)

polygon = GUI(root)
polygon.create_polygon([150,75,225,0,300,75,225,150],     outline='gray', 
        fill='gray', width=2)

polygon.pack()
root.mainloop()

Я думал, что что-то вроде этого будет работать (внутри класса):

def configure(self,colour):
    Canvas.itemconfig(self,fill=colour)

Затем я вызываю это с помощью:

polygon.configure('red')

Но я продолжаю получать эту ошибку, и я не знаю, как ее исправить:

Exception in Tkinter callback
File "C:/Users/User/Documents/Algies homework/Hexaheaflexagon sim.py", line 117, in configure
Canvas.itemconfig(self,fill=colour)
TypeError: itemconfigure() missing 1 required positional argument: 'tagOrId'

person Frosty feet    schedule 22.11.2015    source источник
comment
Понятно, что это домашнее задание. Я думаю, что цель состоит в том, чтобы создать многоугольник внутри класса и метод/функцию для изменения цвета, также внутри класса (и класс должен знать о ссылке на объект многоугольника для изменения цвета). Вы также должны создать экземпляр класса. См. эту ссылку для начальной информации, и функции calculateArea() представляют, как вы измените цвет freenetpages.co.uk/hp/alan.gauld/tutclass.htm   -  person    schedule 22.11.2015
comment
Это домашнее задание, но нет, вы ошибаетесь, я делаю симулятор гексагексафлексагона, у меня уже есть рабочие классы и код для фактических узлов и переходов, а также другие виджеты и настройки для графического интерфейса, спасибо за ссылку :) выглядит обнадеживающий   -  person Frosty feet    schedule 23.11.2015


Ответы (1)


Я думаю, ты пытаешься это сделать

from Tkinter import*

# --- class ---

class GUI(Canvas):
    '''inherits Canvas class (all Canvas methodes, attributes will be accessible)
   You can add your customized methods here.
   '''
    def __init__(self,master,*args,**kwargs):
        Canvas.__init__(self, master=master, *args, **kwargs)
        # default - poly not exists
        self.poly = None

    def create_poly(self, points, outline='gray', fill='gray', width=2):
        # remember poly
        self.poly = self.create_polygon(points, outline=outline, fill=fill, width=width)

    def set_poly_fill(self, color):
        # if poly exists then you can change fill
        if self.poly:
            self.itemconfig(self.poly, fill=color)

# --- main ---

root = Tk()

polygon = GUI(root)
polygon.create_poly([150,75,225,0,300,75,225,150])
polygon.set_poly_fill('red')
polygon.pack()

root.mainloop()
person furas    schedule 22.11.2015