v3_62
А чем код не понравился? Он написан для примера, самый элементарный
Вот пример
v3_62
Оно должно быть записано вот так
То есть ты синтаксис питона не знаешь даже. Имя класса должно быть записано с большой буквы и скобок там не должно быть, если класс ни от чего не наследуется явным образом.
На чем отражается то, что имя класса ты пишешь с маленькой буквы?
Вот фрагмент кода
v3_62
self.root = root
self.parent = perent
win.num += 1
Сразу же возникает ряд вопросов к нему. Если win - это класс, то root справа от знака равно из первой строки - это класс или экземпляр класса? Если win - это класс, то perent справа от знака равно из первой строки - это класс или экземпляр класса? Если win - это класс, то self слева от знака равно из первой строки - это класс или экземпляр класса?
И на эти вопросы надо сидеть и искать ответы, вместо того чтобы понять сразу всё просто по тому, как это записано.
Когда же всё по правилам сделано
class Win:
num = 0
win = Win()
win1 = win
Мы видим, что win - это экземпляр класса, а Win - это класс. Причём там, где скобок не должно быть, их нет, а где они должны быть, они есть. И мы видим, что win справа от знака равно в последней строке является экземпляром класса и win1 слева от знака равно в последней строке является экземпляром класса. То есть мы сразу видим, где класс, а где не класс. Нам не нужно сидеть и думать над этим, тратя время на понимание каждой строчки.
И тут же участок кода, который гипотетически появляется впоследствии
win.num += 1
Win.num += 1
Он является информативным. Мы видим, что сначала в экземпляре класса win инкрементируется что-то, а потом в классе Win инкрементируется что-то. Нам не надо до этого додумываться, тут видно всё по первым буквам в их названиях.
v3_62
выкладывать реальный код с кучей строк не относящегося к вопросу глупо
Из-за того, что ты так пишешь безграмотно, никто не станет читать твой код с кучей строк. Зачем тратить время на расшифровку безграмотного кода? вряд ли в безграмотном коде будет что-то умное в алгоритмическом плане. Очень велика вероятность того, что автор безграмотного кода строит и алгоритмы безграмотно. Придётся ещё алгоритмы разгребать.
Также в этом коде
v3_62
if len(wroot.ltp) > 0:
wroot.ltp[-1].bt.destroy()
wroot.ltp[-1].fr.destroy()
wroot.ltp[-1].tl.destroy()
Видно, что ты занимаешься ерундой, потому что не понимаешь даже, для чего элементы прикрепляются друг к другу при их создании. Дочерние элементы прикрепляются к родительским.
Вот тут, в документации, про которую я тебе писал выше, которую ты не читал вообще, ибо долго, неинтересно и так далее
https://tcl.tk/man/tcl8.6/TkCmd/destroy.htmсказано, что destroy() действует на всё дерево, прикреплёных друг к другу элементов. Для этого они и прикрепляются друг к другу, а не просто так от нечего делать кто-то придумал это зачем-то.
То есть
хватило бы, чтобы выполнить это всё, что ты там понаписал. Но это надо знать. А чтобы это знать, это надо прочитать.
В итоге: не зная элементарнейших вещей, ты предлагаешь тратить время нам на то, чтобы разжёвывать тебе всякие такие вещи, которые давно и в полной мере разжёваны во всех книжках от “для самых маленьких” до “для профессионалов”.
Да, и ещё такой вопрос. Как так получилось, что ты, всё типа зная сам, не смог определить, есть ли утечка памяти в твоём коде? Ведь код элементарный, как ты говоришь. Да и читать ничего не надо, ведь всё можно понять просто так, сходу. Вот подумай просто. Как ты наваял код, который не можешь проанализировать. То есть ты не умеешь писать коды, понятные даже для самого себя?