Пример создания одной строки:
Создаю виджет Frame, в него размещаю по горизонтали ячейки таблицы (экземпляры Label), затем виджет Frame'а размещаю с помощью метода Canvas.create_window в холсте.
Но столкнулся с тем, что привязывая метод к идентификатору окна внутри холста, метод просто не срабатывает.
Немного поэксперементировав, я пришёл к выводу, что метод срабатывает при нажатии на само окно, но его закрывают поля таблицы.
Подскажите, как можно это исправить или может быть есть более простое решение для “развёртывающейся” строки?
(новые развернутые строки не будут соответствовать названиям в шапке - это иная информация)
Код:
class PaymentCanvas(Frame): def __init__(self, parent=None, *arg, **kw): super(PaymentCanvas, self).__init__(parent, *arg, **kw) self.canvas = Canvas(self, width=600, height=100, bg='beige') self.testFr = Frame(self.canvas) for i, (text, width) in enumerate(zip(("0", "111", "222", "333", "444", "555"), (6, 16, 11, 13, 11, 14))): lb = Label(self.testFr, width=width, text=text, relief=GROOVE, justify=LEFT, bg='moccasin') lb.grid(row=0, column=i, padx=0, pady=0, sticky=EW) id_ = self.canvas.create_window(0, 0, anchor = NW, window = self.testFr, width = 593, height = 18) self.canvas.addtag_withtag('????-??-??', id_) self.canvas.pack() self.canvas.tag_bind(id_, '<Button-1>', self.test) def test(self, *ign): self.canvas.itemconfig('????-??-??' , height = 55) Label(self.testFr, text='6666', relief=GROOVE, justify=LEFT, bg='moccasin').grid(row=1, column=0, padx=0, pady=0, sticky=EW) Label(self.testFr, text='777', relief=GROOVE, justify=LEFT, bg='moccasin').grid(row=2, column=0, padx=0, pady=0, sticky=EW)