Перемещение по виджетам в 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 
  • Добавить изображение в Tkinter Entry
  • Невозможно установить значение с помощью скрипта tkinter / python при использовании cxfreeze
  • Динамически менять цвет фона виджета в Tkinter
  • Боги цикла снова нападают - Как сохранить сокет, несмотря на GUI mainloop?
  • python tkinter overrideredirect; не может получать нажатия клавиш (Linux)
  • Вставка gif изображения в холст с помощью Tkinter
  • Tkinter привязывает клики к кадру
  • Проверка диапазона Tkinter Spinbox
  • Python - лучший язык программирования в мире.