Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Опция липкой сетки не сжимает ведомого

Автор вопроса: Roman KaganovichОтветов: 2

Я пытаюсь создать графический интерфейс, содержащий три холста.

Представление, которое я хочу создать, выглядит следующим образом:

--------------------------------------------
|    |                                |    |
|    |                                |    |
|    |                                |    |
|    |                                |    |
--------------------------------------------

Два узких полотна слева и справа и одно большое полотно в центре. Это мой код:

#!/bin/sh
# \
exec wish "$0"

canvas .lib
canvas .lef -background "black"
canvas .lay

grid .lib -row 0 -column 0 -sticky ns
grid .lef -row 0 -column 1 -sticky nsew
grid .lay -row 0 -column 2 -sticky ns

# Added as proposed by Donal Fellows
grid columnconfigure . 1 -weight 1

Но вместо описанного выше порядка я получаю все холсты одного размера.

холсты

  • Можете ли вы явно задать ширину холстов? Jerry 21.01.2015
  • Это то, что я получу, если укажу ширину холста (например, canvas .lib -row 0 -column 0 -sticky ns -width 100 середина на 500 и справа на 100). Jerry 21.01.2015
  • Да! это сделало работу. Спасибо, Джерри! Roman Kaganovich 21.01.2015
  • @ Джерри, я думаю, вы можете отправить свой комментарий как ответ, чтобы я мог пометить его как отвеченный. Roman Kaganovich 22.01.2015

tcltk

Ответы

Ответ 1 · рейтинг 1 · Jerry

Если вы не "исправляете" ширину столбцов для холстов, вы можете установить определенную ширину с помощью параметра -width при создании холста:

canvas .lib -width 100
canvas .lef -background "black" -width 500
canvas .lay -width 100

И со всем остальным то же самое, что я получаю:

Если вы хотите позже изменить ширину холста, вы, конечно, можете использовать что-то вроде .lib configure -width 200, чтобы изменить ширину холста .lib на 200 пикселей.

Ответ 2 · Donal Fellows

Диспетчер геометрии сетки использует систему весов для перераспределения дополнительного пространства для столбцов (и строк), однако все столбцы (и строки) начинаются с нулевого веса, поэтому по умолчанию дополнительное пространство вообще не выделяется. Вы должны явно указать этому столбцу ненулевой вес.

grid columnconfigure . 1 -weight 1

Обратите внимание, что вес применяется ко всему столбцу, а не к отдельным виджетам в нем, поэтому вес нельзя установить при добавлении виджета.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы