Есть ли способ установить минимальный размер холста tcl/tk?

У меня есть всплывающее окно, представляющее собой холст, для которого я хочу разрешить пользователю перетаскивать его до любого размера, который они хотят, однако он может свернуть во что-то очень маленькое и непригодное для использования. Есть ли способ установить минимальный размер холста? (например, как «wm minsize») Надеюсь, ответ не в том, чтобы встроить холст «в окно».


person bk888    schedule 08.06.2016    source источник


Ответы (1)


Естественный минимальный размер холста — 11.

Как правило, фактический минимальный размер холста устанавливается менеджером геометрии; поскольку большую часть времени вы хотите использовать grid для содержания холста (чтобы вы могли правильно расположить полосы прокрутки), ключевым моментом является установка минимальных размеров для соответствующей строки и столбца:

set master .
set canvas .canv

# Go for a minimum size of 400x200
grid columnconfigure $master $canvas -minsize 400
grid rowconfigure    $master $canvas -minsize 200

pack GM вообще не позволяет указать минимальный размер; он использует модель компоновки, в которой нет этой концепции. place позволяет говорить все напрямую, но в большинстве ситуаций не очень помогает. Если вы встраиваете холст в другой виджет (например, в текстовый виджет), могут быть другие варианты.

Обратите внимание, что вы не можете фактически заставить систему подчиняться указанным вами директивам минимального размера. Это просто (действительно сильные) намеки. (Возможно, вы также захотите изучить команду wm minsize, чтобы управлять требуемым размером всего окна верхнего уровня, но это независимо; минимальный размер виджета не является минимальным размером всего контейнера, хотя они могут взаимодействовать.)

person Donal Fellows    schedule 08.06.2016