Tcl / TK кнопки или соглашения об именах верхнего уровня - PullRequest
2 голосов
/ 27 сентября 2010

Когда вы создаете новый уровень или кнопку в ТЗ, вам нужно ввести путь.Я видел основной код, который выглядит следующим образом:

toplevel .a
...
button .a.b ...

Мой вопрос таков: точки трактуются иначе, чем буквы?Являются ли они своего рода разделителями иерархии, которые создают родительские дочерние отношения?Я посмотрел на вики TK и не смог найти ответ на этот вопрос.Большое спасибо, -Lior

Ответы [ 3 ]

3 голосов
/ 27 сентября 2010

Как уже говорилось в других ответах, точки представляют иерархию так же, как / или \ используются для представления иерархии файловой системы.

Размещение виджетов в иерархии, строго говоря, не требуется. Одним из преимуществ этого является то, что такие геометрические менеджеры, как grid и pack, по умолчанию управляют детьми в их родителях. Например, «pack .a.b.c» упакует виджет a.b.c в виджет .a.b. Это позволяет легко делать простые макеты.

Такого же эффекта во многих случаях можно достичь, указав сетку и пакет, в который контейнер следует поместить ребенка. Например, 'pack .c -in .a.b' поместит виджет .c в контейнер .a.b. Это позволит вам уменьшить иерархию и немного упростить рефакторинг.

См. http://www.beedub.com/book/2nd/TKINTRO.doc.html для хорошего знакомства с основами ТК.

2 голосов
/ 27 сентября 2010

Да, они есть! Например, они разделяют фрейм с содержимым, являющимся виджетами:

set f [frame .hello]
button $f.b -text "Hello button"

pack $f.b

pack $f

Как вы можете видеть в этом примере, f оценивается как переменная, а не f.b

Вы также можете написать пакет $ {f} .b, но это не нужно, поскольку точка не является частью переменной.

1 голос
/ 27 сентября 2010

Да - это для иерархии.Взгляните на TkDocs по теме:

Фрейм, который был дочерним для корня, был назван ".c".Мы могли бы поставить что угодно вместо «c», назвав его, например, «.content».Это имя исключительно для использования вашей программой, поэтому лучше выбрать что-то осмысленное.Элементам управления, которые были дочерними элементами фрейма, были присвоены имена, такие как ".c.feet", ".c.meters", ".c.flbl" и т. Д.Если бы были какие-либо виджеты на более глубоком уровне иерархии, мы бы добавили еще один "."а затем уникальный идентификатор.

...