В tkinter Не удается повторно вызвать метод рисования линий с другими координатами
В tkinter Не удается повторно вызвать метод draw_lines() с другими координатами. При этом печатаются они повторным вызовом метода printing() без проблем. Не могу понять, почему? Если использовать функцию рисования вне класса, все вызывается и работает. Помогите, пожалуйста, разобраться.
from tkinter import Tk, Canvas
class DrawLines():
def __init__(self, master):
self.canv_1 = Canvas(master, width=400, height=250)
self.canv_1.grid(column=0, row=0)
self.line_1 = [249, 120, 150, 10]
self.line_2 = [0, 120, 150, 210]
self.printing(self.line_1)
self.printing(self.line_2)
self.draw_lines(self.line_1)
self.draw_lines(self.line_2)
def printing(self, a):
print('Printing ', a)
def draw_lines(self, line_1):
self.canv_1.create_line(self.line_1[0],
self.line_1[1],
self.line_1[2],
self.line_1[3])
root = Tk()
dl = DrawLines(root)
root.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
У вас в методе draw_lines координаты берутся не из параметра метода line_1, а из поля объекта self.line_1. Нужно убрать self (и чтобы не путаться лучше переименовать параметр, так чтобы имя не совпадало с именем поля объекта):
def draw_lines(self, line):
self.canv_1.create_line(line[0],
line[1],
line[2],
line[3])