Установите флажок «Все» в заголовке списка таблиц Tcl/Tk.

Как реализовать флажок внутри заголовка tcl/tk Tablelist для реализации функции выбора всех . Я не смог найти ни одного ресурса. Возможно ли это любым способом? Пожалуйста, направляйте.


person Codename_DJ    schedule 15.12.2014    source источник
comment
Вы имеете в виду этот виджет списка таблиц? Вы уверены, что именно этого ожидают ваши пользователи? (В основном они ожидают, что щелчок по заголовку будет означать «сортировать по этому столбцу»…)   -  person Donal Fellows    schedule 15.12.2014
comment
Я имел в виду кнопку-флажок внутри заголовка, например: ssw. com.au/SSW/standards/rules/Images/SelectAllCheckBox_Web.jpg   -  person Codename_DJ    schedule 15.12.2014
comment
Раньше я думал об использовании опции -labelcommand, но позже отказался от этой идеи по той же причине, которую вы упомянули в предыдущем комментарии.   -  person Codename_DJ    schedule 15.12.2014
comment
Извините, забыл ответить на главный вопрос. Вы имеете в виду этот виджет списка таблиц? -да, я использую этот виджет списка таблиц   -  person Codename_DJ    schedule 15.12.2014


Ответы (1)


Я обошел проблему, так как не нашел прямого способа добавить виджет в заголовок списка таблиц. я использовал два изображения png 16x16 (одно из неотмеченных полей Unchecked; другое отмеченное поле Checked ) как -labelimage, который был переключен с помощью команды label.

Таким образом, пользователь получает представление о том, как щелкнуть это поле (фактически весь заголовок). введите здесь описание изображения

Пример кода: (не оптимизирован)

package require Tk
package require tablelist
package require Img

namespace eval ::test {
    variable toggleState 0
}
proc onClick {tbl col} {
if {$::test::toggleState==0} {
    .tbl columnconfigure 0 -labelimage .image.uncheckedbox
    ## ENTER YOUR CODE HERE TO DESELECT ALL CHECKBOX IN CELL WINDOW OF 0th COLUMN.
    set ::test::toggleState 1
} else {
    .tbl columnconfigure 0 -labelimage .image.checkedbox
    ## ENTER YOUR CODE HERE TO SELECT ALL CHECKBOX IN CELL WINDOW OF 0th COLUMN.
    set ::test::toggleState 0
}

}

tablelist::tablelist .tbl -columntitles {col1 col2 col3} -height 10 -width 100 -stretch all -stripebackground #e0e8f0
grid .tbl -padx 5 -pady 5 -sticky news

    image create photo .image.checkedbox -file {E:\path\checked.png}
    image create photo .image.uncheckedbox -file {E:\path\unchecked.png}

.tbl columnconfigure 0 -labelimage .image.uncheckedbox -labelcommand onClick
person Community    schedule 16.12.2014