#tkinter #widget #label
#tkinter #виджет #метка
Вопрос:
У меня есть небольшое приложение, в котором я тестирую различные виджеты, прежде чем внедрять их в основной файл кода, и я заметил, что у меня был, похоже, ошибочный способ отображения метки, но он все равно работал и не вызывал ошибок. Вместо того, что я обычно делал бы, что было бы: Label2=Label(frame1, text='second label').place(x=30,y=90)
у меня было Label(frame1, text='frame1').place(x=30,y=50)
, и оба отображались правильно. Итак, мне интересно, почему вторая строка сработала и не будет ли на нее невозможно ссылаться, поскольку ей не присвоена переменная?
Ответ №1:
Итак, мне интересно, почему сработала вторая строка
Вторая строка сработала просто потому, что так оно и задумано. Вам не нужно сохранять ссылку на виджет tkinter, чтобы он работал.
… и разве на него нельзя было бы ссылаться, поскольку ему не присвоена переменная?
Да, это недостаток отсутствия сохранения ссылки — у вас нет простого способа ссылаться на виджет после его создания. Вы все равно можете получить ссылку различными способами, но проще просто всегда сохранять ссылку.
Кроме того, я считаю, что лучше отделить создание виджета от компоновки виджета. Я считаю, что приложения tkinter намного легче читать, когда все виджеты макета для набора родственных элементов находятся в одном блоке, а не чередуются с кодом, который создает виджеты.
Комментарии:
1. Не только удобочитаемость, но я только что обнаружил, что использование
.place()
строки присваивания переменной вызвало у меня проблемы с размещением метки на фрейме, который находится на вкладке. (Затем я также разместил вкладки в другом фрейме, и эта гибкость очень классная)