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

Вопрос

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

Автор вопроса: Codename_DJОтветов: 1

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

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

checkboxtcltk

Ответы

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

Я обошел проблему, так как не нашел прямого способа добавить виджет в заголовок списка таблиц. я использовал два изображения png 16x16 (одно из неотмеченных полей ; другое отмеченное поле ) как -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

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

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