WedX - журнал о программировании и компьютерных науках

Как сделать текст в метке Tk доступным для выбора?

Я создаю метки в Tcl Tk, но их текст не выделяется (для копирования-вставки). Как сделать доступным для выбора?

Я создаю этикетки, используя:

set n 0
foreach t $list_of_labels {
    incrr n
    set lbl2 [label .prop_menu.main_frame.val_$n    -text $t]
    grid $lbl2 ...
}
10.06.2012

Ответы:


1

Вы не можете этого сделать, не взяв много кода привязки из какого-нибудь другого виджета и не применив его к своей этикетке. Если вам это нужно, вам лучше взять виджет входа и сделать его похожим на метку. Что-то вроде:

entry .e1 -textvar t -relief flat -background [$parentWindow cget -background]

Если вы не хотите, чтобы фокус перемещался на них, добавьте -takefocus 0.

10.06.2012
  • Я пробовал это, но у меня проблема с установкой значения по умолчанию для записи. Метки создаются внутри цикла, где n и t каждый раз получают другие значения. Я не хочу создавать текстовую переменную для каждой новой записи. Есть ли способ поместить текст в запись без использования переменной? 10.06.2012
  • @IlyaMelamed: используйте что-то вроде .e1 insert 0 $t 10.06.2012

  • 2

    Чтобы текст в метке можно было выбрать всем, должны быть применены привязки, чтобы программа знала, когда его выбирать (а не что-то еще), и должен быть какой-то код для размещения код в выделение (точнее в буфер обмена). Последнее на самом деле довольно просто сделать с помощью команды clipboard:

    clipboard clear
    clipboard append $text
    

    Неловко настроить привязки и показать, что выбор сделан. Самый простой — просто сделать что-то вроде этого (привязка к щелчку мыши):

    bind .lbl <1> {
        clipboard clear
        clipboard append [%W cget -text]
        bell
    }
    

    Хорошо, это определенно отстой; ты можешь лучше! Чего вы не получите, так это стиля выделения, который часто поддерживают собственные встроенные ярлыки Windows (где вы можете перетащить выделение и просто нажать Ctrl+C), как это требуется возможность рисовать подсветку, которой у виджетов ярлыков Tk просто нет. (Вы можете взломать что-то с помощью записей, но они не могут отображать несколько строк текста, или вы можете использовать текстовый виджет, но тогда вам придется проделать много работы с привязками, чтобы заставить его вести себя как вы хотите.)

    10.06.2012

    3

    Я решил это, используя записи только для чтения, я заменил создание метки на:

    set lbl2 [entry .prop_menu.main_frame.val_$n -relief flat]
    $lbl2 insert 0 $t
    $lbl2 configure -state readonly
    

    И смог создать записи, которые действуют как метки, но могут быть выбраны.

    10.06.2012
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]