EDIT: Я идиот. Я пропустил тот факт, что это список для копирования на запись, поэтому каждое удаление означает новую копию . Поэтому мои предложения ниже могут быть субоптимальными, если есть несколько удалений.
То же, что и для любого другого списка, итератор которого не поддерживает удаление, или что-либо, где вы не используете итератор. Есть три основных метода, которые приходят на ум, чтобы избежать этой ошибки:
for (int i = 0; i & lt;
... style for for), чтобы вы могли манипулировать индексом. По умолчанию tk frames сжимаются или растут, чтобы соответствовать их содержимому , чего вы хотите в 99% случаев. Термин, описывающий эту функцию, - «распространение геометрии». Существует команда , чтобы включить или отключить распространение геометрии при использовании pack
(и аналогичного для grid
).
Поскольку вы используете пакет, синтаксис будет выглядеть следующим образом:
f.pack_propagate(0)
или, возможно, root.pack_propagate(0)
, в зависимости от того, какие виджеты вы действительно хотите повлиять.
Как сказано, подавляющее большинство времени вы должны позволить tkinter вычислить размер. Когда вы поворачиваете распространение геометрии, ваш графический интерфейс не будет хорошо реагировать на изменения разрешения, изменения в шрифтах и т. Д. Менеджеры геометрии tkinter (pack
, place
и grid
) являются чрезвычайно мощными. Научитесь использовать эту власть.
self.pack_propagate(0)
, если сделано в методе, подобном__init__()
класса виджета, полученного изFrame
- как в обычно используемойclass Application(Frame):
идиоме. – martineau 30 September 2012 в 20:09