listbox
-
Имя
- listbox — Создание и управление виджетами списков 'listbox'
- Синтаксис
- Стандартные параметры
-
-background или -bg, background, Фон
- -borderwidth или -bd, borderWidth, Ширина границы
- -cursor, cursor, Указатель
- -disabledforeground, disabledForeground, Цвет неактивного текста
- -exportselection, exportSelection, Экспорт выделения
- -font, font, Шрифт
- -foreground или -fg, foreground, Цвет текста
- -highlightbackground, highlightBackground, Цвет выделения
- -highlightcolor, highlightColor, Цвет выделения
- -highlightthickness, highlightThickness, Толщина выделения
- -justify, justify, Выравнивание
- -relief, relief, Рельеф
- -selectbackground, selectBackground, Цвет фона выделения
- -selectborderwidth, selectBorderWidth, Ширина границы выделения
- -selectforeground, selectForeground, Цвет текста выделения
- -setgrid, setGrid, Сетка
- -takefocus, takeFocus, Получение фокуса
- -xscrollcommand, xScrollCommand, Команда прокрутки по горизонтали
- -yscrollcommand, yScrollCommand, Команда прокрутки по вертикали
- -borderwidth или -bd, borderWidth, Ширина границы
-
-activestyle, activeStyle, Стиль активации
- -height, height, Высота
- -listvariable, listVariable, Переменная
- -selectmode, selectMode, Режим выбора
- -state, state, Состояние
- -width, width, Ширина
- -height, height, Высота
-
число
- активный
- якорь
- конец
- @x,y
- активный
Имя
listbox — Создание и управление виджетами списков 'listbox'Синтаксис
listboxимя_пути ?параметры?Стандартные параметры
-
-background или -bg, background, Фон
- -borderwidth или -bd, borderWidth, Ширина границы
- -cursor, cursor, Указатель
- -disabledforeground, disabledForeground, Цвет неактивного текста
- -exportselection, exportSelection, Экспорт выделения
- -font, font, Шрифт
- -foreground или -fg, foreground, Цвет текста
- -highlightbackground, highlightBackground, Цвет выделения
- -highlightcolor, highlightColor, Цвет выделения
- -highlightthickness, highlightThickness, Толщина выделения
- -justify, justify, Выравнивание
- -relief, relief, Рельеф
- -selectbackground, selectBackground, Цвет фона выделения
- -selectborderwidth, selectBorderWidth, Ширина границы выделения
- -selectforeground, selectForeground, Цвет текста выделения
- -setgrid, setGrid, Сетка
- -takefocus, takeFocus, Получение фокуса
- -xscrollcommand, xScrollCommand, Команда прокрутки по горизонтали
- -yscrollcommand, yScrollCommand, Команда прокрутки по вертикали
- -borderwidth или -bd, borderWidth, Ширина границы
Параметры, специфичные для виджета
- Имя в командной строке: -activestyle
- Имя базы данных: activeStyle
- Класс базы данных: ActiveStyle
- Имя базы данных: activeStyle
- Устанавливает стиль отображения активного элемента. Допустимые значения: dotbox (отображает фокусную рамку вокруг активного элемента), none (без специального обозначения активного элемента) или underline (подчеркивает активный элемент). По умолчанию используется underline в Windows и dotbox в других системах.
- Имя в командной строке: -height
- Имя базы данных: height
- Класс базы данных: Height
- Имя базы данных: height
- Устанавливает желаемую высоту окна в строках. Если значение равно нулю или меньше, высота окна устанавливается так, чтобы вместить все элементы в списке.
- Имя в командной строке: -listvariable
- Имя базы данных: listVariable
- Класс базы данных: Variable
- Имя базы данных: listVariable
- Устанавливает имя глобальной переменной. Значение переменной должно быть списком, который будет отображаться внутри виджета; если значение переменной изменяется, виджет автоматически обновляется для отражения нового значения. Попытка присвоить переменной некорректное значение списка в -listvariable вызовет ошибку. Попытка удалить переменную, используемую в -listvariable, завершится неудачей, но не вызовет ошибку.
- Имя в командной строке: -selectmode
- Имя базы данных: selectMode
- Класс базы данных: SelectMode
- Имя базы данных: selectMode
- Устанавливает один из нескольких стилей для управления выделением. Значение опции может быть произвольным, но стандартные привязки ожидают, что это будет single, browse, multiple или extended; значение по умолчанию — browse.
- Имя в командной строке: -state
- Имя базы данных: state
- Класс базы данных: State
- Имя базы данных: state
- Устанавливает одно из двух состояний списка: normal или disabled. Если список отключен, то элементы нельзя вставлять или удалять, элементы отображаются в цвете -disabledforeground, выделение нельзя изменить и оно не отображается (хотя информация о выделении сохраняется).
- Имя в командной строке: -width
- Имя базы данных: width
- Класс базы данных: Width
- Имя базы данных: width
- Устанавливает желаемую ширину окна в символах. Если шрифт не имеет одинаковой ширины, для перевода из символьных единиц в экранные используется ширина символа “0”. Если значение равно нулю или меньше, ширина окна устанавливается так, чтобы вместить все элементы в списке.
Описание
Команда listbox создаёт новое окно (указанное аргументом pathName) и преобразует его в виджет списка. Дополнительные опции, описанные выше, могут быть указаны в командной строке или в базе данных опций для настройки аспектов списка, таких как цвета, шрифт, текст и отступ. Команда listbox возвращает свой аргумент pathName. В момент вызова этой команды окно с именем pathName не должно существовать, но родительское окно pathName должно существовать.Список — это виджет, который отображает список строк, по одной на строке. Когда он впервые создаётся, новый список не содержит элементов. Элементы можно добавлять или удалять с помощью команд виджетов, описанных ниже. Кроме того, можно выбрать один или несколько элементов, как описано ниже. Если список экспортирует своё выделение (см. опцию -exportselection), то он будет следовать стандартным протоколам X11 для обработки выделения. Выделения списка доступны как тип STRING; значение выделения будет текстом выбранных элементов, с разделителями из новых строк между элементами.
Не обязательно, чтобы все элементы отображались в окне списка сразу; команды, описанные ниже, могут использоваться для изменения представления в окне. Списка позволяют прокрутку в обоих направлениях с использованием стандартных опций -xscrollcommand и -yscrollcommand. Они также поддерживают поиск, как описано ниже.
Индексы
Многие из команд виджетов для списков принимают один или несколько индексов в качестве аргументов. Индекс определяет конкретный элемент списка, любым из следующих способов:- number
- Определяет элемент как числовой индекс, где 0 соответствует первому элементу в списке.
- active
- Указывает элемент, на котором находится курсор. Этот элемент будет отображаться в соответствии с -activestyle, когда список имеет фокус клавиатуры, и он указан с помощью команды виджета activate.
- anchor
- Указывает точку якорной точки для выделения, которая устанавливается с помощью команды виджета selection anchor.
- end
- Указывает конец списка. Для большинства команд это относится к последнему элементу списка, но для некоторых команд, таких как index и insert, это относится к элементу, находящемуся сразу после последнего.
- @x,y
- Указывает элемент, который охватывает точку в окне списка, указанную x и y (в пиксельных координатах). Если ни один элемент не покрывает эту точку, используется ближайший к ней элемент.
В описаниях команд виджетов ниже, аргументы с именами index, first и last всегда содержат текстовые индексы в одном из указанных выше форматов.
Команда виджета
Команда listbox создаёт новую команду Tcl, имя которой — pathName. Эта команда может быть использована для вызова различных операций над виджетом. Она имеет следующий общий вид:pathName option ?arg arg ...?Option и args определяют точное поведение команды. Для виджетов списка возможны следующие команды:
Стандартные привязки
Tk автоматически создаёт привязки класса для списков, придавая им поведение, аналогичное Motif. Большое влияние на поведение списка оказывает его параметр -selectmode, который задаёт один из четырёх способов обработки выбора.Если режим выбора равен single или browse, в списке одновременно может быть выбран не более одного элемента. В обоих режимах нажатие левой кнопки мыши на элемент выбирает его и отменяет выбор любого другого выделенного элемента. В режиме browse также можно перетаскивать выделение с помощью левой кнопки мыши. Нажатие левой кнопки мыши также переведёт фокус на список, если его состояние равно normal.
Если режим выбора равен multiple или extended, может быть выбрано любое количество элементов одновременно, включая несмежные диапазоны. В режиме multiple нажатие левой кнопки мыши на элемент переключает его состояние выбора, не влияя на другие элементы. В режиме extended нажатие левой кнопки мыши на элемент выбирает его, отменяет выбор всего остального и устанавливает якорь на элемент под курсором; перетаскивание мышью с нажатой левой кнопкой мыши расширяет выбор, включив все элементы между якорем и элементом под курсором включительно.
Большинство пользователей, вероятно, захотят использовать режим browse для одиночного выбора и extended для множественного; другие режимы, по-видимому, полезны только в особых ситуациях.
Всякий раз, когда набор выбранных элементов в списке обновляется пользователем с помощью клавиатуры или мыши, генерируется виртуальное событие <<ListboxSelect>>. Это виртуальное событие не генерируется при изменении выбора с помощью команды pathName selection. Легче всего привязаться к этому событию, чтобы быть в курсе любых изменений выбора в списке пользователем.
Помимо вышеперечисленного поведения, определено следующее дополнительное поведение:
- В режиме extended диапазон выбора может быть изменён нажатием левой кнопки мыши с зажатой клавишей Shift: это меняет выбор таким образом, чтобы он состоял из элементов между якорем и элементом под курсором включительно. Непривязанный конец этого нового выбора также можно перетаскивать, удерживая кнопку мыши нажатой.
- В режиме extended нажатие левой кнопки мыши с зажатой клавишей Ctrl запускает операцию переключения: якорь устанавливается на элемент под курсором, а его состояние выбора инвертируется. Состояние выбора других элементов не изменяется. Если перетаскивать мышь с нажатой левой кнопкой, состояние выбора всех элементов между якорем и элементом под курсором устанавливается в соответствии с состоянием якоря; состояние выбора всех других элементов остаётся тем, что было до начала операции переключения.
- Если курсор мыши покидает окно списка с нажатой левой кнопкой, окно прокручивается от курсора мыши, делая видимой информацию, которая раньше была вне экрана с той стороны курсора мыши. Прокрутка продолжается до тех пор, пока курсор мыши не вернётся в окно, кнопка не будет отпущена или не будет достигнут конец списка.
- Кнопка мыши 2 может использоваться для сканирования. Если её нажать и перетаскивать по списку, содержимое списка перемещается с высокой скоростью в направлении движения мыши.
- При нажатии клавиш со стрелками вверх или вниз курсор (активный элемент) перемещается на один элемент вверх или вниз. Если режим выбора равен browse или extended, новый активный элемент также выбирается, и все остальные элементы отменяются. В режиме extended новый активный элемент становится якорем выбора.
- В режиме extended клавиши Shift-Up и Shift-Down перемещают курсор (активный элемент) вверх или вниз на один элемент и также расширяют выбор до этого элемента аналогично перетаскиванию левой кнопкой мыши.
- Клавиши влево и вправо прокручивают просмотр списка влево и вправо на ширину символа 0. Клавиши Ctrl-влево и Ctrl-вправо прокручивают просмотр списка влево и вправо на ширину окна. Клавиши Ctrl-PageUp и Ctrl-PageDown также прокручивают влево и вправо на ширину окна.
- Клавиши PageUp и PageDown прокручивают просмотр списка вверх и вниз на одну страницу (высоту окна).
- Клавиши Home и End прокручивают просмотр списка горизонтально до левого и правого краёв соответственно.
- Ctrl-Home устанавливает курсор на первый элемент в списке, выбирает этот элемент и отменяет выбор всех остальных элементов в списке.
- Ctrl-End устанавливает курсор на последний элемент в списке, выбирает этот элемент и отменяет выбор всех остальных элементов в списке.
- В режиме extended Ctrl-Shift-Home расширяет выбор до первого элемента в списке, а Ctrl-Shift-End — до последнего.
- В режиме multiple Ctrl-Shift-Home перемещает курсор на первый элемент в списке, а Ctrl-Shift-End — на последний.
- Пробел и клавиша выбора делают выбор в позиции курсора (активного элемента), точно так же, как если бы левая кнопка мыши была нажата над этим элементом.
- В режиме extended Ctrl-Shift-пробел и Shift-выбор расширяют выбор до активного элемента, точно так же, как если бы левая кнопка была нажата с зажатой клавишей Shift.
- В режиме extended клавиша Esc отменяет последний выбор и восстанавливает все элементы в выделенном диапазоне в их предыдущее состояние выбора.
- Ctrl-сlashes выбирает всё в виджете, за исключением режимов single и browse, в которых он выбирает активный элемент и отменяет выбор всего остального.
- Ctrl-backslash отменяет выбор всего в виджете, за исключением режима browse, где он не оказывает никакого влияния.
- Кнопка F16 (на многих рабочих станциях Sun обозначена как Копировать) или Meta-w копирует выделение в виджете в буфер обмена, если выделение существует.
Поведение списков можно изменить, определив новые привязки для отдельных виджетов или переопределив привязки класса.
См. также
ttk::treeview
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/listbox.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/listbox.htm