Перемещение по виджетам в Tkinter

вот о чем я думаю:

У меня есть ряд похожих виджетов в кадре (например, Lables). Я обновляю их каждую итерацию алгоритма (используя root.update() в соответствующей функции. То, что я хотел бы знать, – это как прокрутить каждую метку.

Конечно, они были созданы с чем-то вроде

 self.var1=IntVar() self.lab1=Label(frame,textvariable=self.var1) self.lab1.grid() 

Таким образом, каждая из таблиц называется lab1, lab2 и т. Д. Я вполне уверен, что должен быть лучший способ их называть, так что мне не нужно вызывать каждое имя явно или каким-то образом зацикливаться на них.

2 Solutions collect form web for “Перемещение по виджетам в Tkinter”

Самый простой способ – хранить ссылки на каждый виджет в списке или словаре, а не (или в дополнение к) переменным экземпляра масштабирования.

В вашей схеме имен констант вы можете использовать имя переменной для итерации через переменные:

 for i in range(1,n): label = getattr(self, "lab"+str(i)) 

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

 for child in frame.children.values(): #do something to all children 

И, в конце концов, добавьте некоторую фильтрацию, если ваш фрейм содержит другие виджеты. Например, чтобы фильтровать классы виджетов:

 for label in filter(lambda w:isinstance(w,Label), frame.children.itervalues()): #do something on labels 

Обратите внимание, что у детей нет гарантий при обходе заказа. Для такого сервиса вы можете полагаться на информацию о менеджере геометрии, то есть pack_slaves или grid_slaves :

 for child in frame.pack_slaves(): #traverse in pack addition order #or for child in reversed(frame.grid_slaves()): #traverse in grid addition order 
  • NameError: глобальное имя «END» не определено
  • Разница между менеджерами геометрии «сетка» и «пакет»
  • Темы и время + Tkinter в Python
  • Звуки завершаются до следующего, в python?
  • Какая магия предотвращает блокировку программ Tkinter в интерактивной оболочке?
  • Ввод данных от пользователя в Tkinter
  • Как запустить скрипт Python без его открытия окна консоли?
  • Эквивалент PIL ImageTk в Python 3.x
  • Использование модуля ImageDraw PIL
  • Запуск цикла вместе с приложением Tkinter
  • как очистить / удалить текстовое поле в tkinter python на Ubuntu
  •  
    Interesting Posts for Van-Lav

    Прочтите CSV-файл из URL-адреса в Python 3.x – _csv.Error: iterator должен возвращать строки, а не байты (вы открыли файл в текстовом режиме?)

    (Django) Обрезать пробелы из charField

    Редактирование программ «пока они работают»? Как?

    Как запустить доктрины с помощью PyCharm?

    TypeError: объект «list» не может быть вызван при попытке получить доступ к списку

    Неподдерживаемый тип (ы) операндов для +: 'int' и 'str'

    django, «не является сериализуемым JSON» при использовании ugettext_lazy?

    Как отслеживать Heisenbug в коде Python?

    Как использовать urllib2.urlopen для запроса POST без аргумента данных

    make np.vectorize возвращает скалярное значение на скалярном входе

    Python, как я могу получить информацию о часовом поясе в django

    получение важных данных с веб-страницы с использованием python

    Недопустимый токен CSRF

    Считываемость кода Scientific Python (линейные континуусы, переменные имена, импорт)

    алгоритм сглаживания строк в python?

    Python - лучший язык программирования в мире.