2012-06-10 7 views

ответ

0

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

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

И был в состоянии создать элементы, которые действуют как метки, но можно выбирать.

+0

radnom downvoter: пожалуйста, объясните! – drevicko

1

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

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

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

+0

Я пробовал это, но у меня возникла проблема с помещением значения по умолчанию для записи. Эти метки создаются внутри цикла, где 'n' и' t' получают другие значения каждый раз. Я не хочу создавать текстовую переменную для каждой новой записи. Есть ли способ поместить текст в запись без использования переменной? – SIMEL

+0

@IlyaMelamed: используйте что-то вроде '.e1 insert 0 $ t' –

0

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

clipboard clear 
clipboard append $text 

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

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

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

Смежные вопросы