2015-12-10 2 views
0
class circle_color: 
    def __init__(self): 
     self.circle_red = canvas.create_oval(10, 160, 140, 290, fill="red") 
     self.circle_blue = canvas.create_oval(10, 10, 140, 140, fill="blue") 

    def circle_blue_add(self): 
      return self.circle_blue 

    def circle_red_add(self): 
      return self.circle_red 

but_circle_blue_add = Button(panel_with_button, text="Add Blue Circle", width=20, command=circle_color.circle_blue_add) 
but_circle_blue_add.place(x=10, y=10) 

but_circle_blue_del = Button(panel_with_button, text="Add Red Circle", width=20, command=circle_color.circle_blue_add) 
but_circle_blue_del.place(x=10, y=50)' 

Эта ошибкаPython ООП, TypeError самостоятельно в своем коде

Exception in Tkinter callback 
    Traceback (most recent call last): 
     File "C:\Users\Fleshka\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1549, in __call__ 
     return self.func(*args) 
    TypeError: circle_blue_add() missing 1 required positional argument: 'self' 

мне нужно нарисовать две фигуры один синий и красный с ООП программирования. Но я не понимаю, почему это не работает.

+0

Это объектно-ориентированный объект, и у вас нет объекта. – TigerhawkT3

+0

Чтобы выяснить, метод 'circle_blue_add' ожидает, что вы передадите его' self' (экземпляр класса), а вы этого не сделали. Пожалуйста, разверните образец кода в [MCVE] (http://stackoverflow.com/help/mcve), чтобы мы могли определить изменения, наиболее подходящие для вашей программы. – TigerhawkT3

ответ

1

Вы пытаетесь вызвать метод класса (который я предполагаю не то, что вы на самом деле хотите сделать). Вам нужно создать экземпляр класса и вызвать методы экземпляра.

cc = circle_color() 
but_circle_blue_add = Button(panel_with_button, text="Add Blue Circle", width=20, command=cc.circle_blue_add) 
+0

Спасибо, что это работает, но когда я запускал свою программу, уже фигурирую на экране вместо нажатия кнопки – Vladislav

+0

Да, '__init__' - это« волшебный »метод, который вызывается при создании экземпляра класса, то есть на' circle_color() '. – 101

Смежные вопросы