2016-09-10 2 views
1

Я хочу, чтобы в появившемся окне появилась простая строка, чтобы поместить одну строку текста и кнопку ok, чтобы установить значение переменной. Когда я использую команду простого ввода, она появляется в моем главном окне. Мне нужно что-то вроде tk_dialog с возможностью поместить текст в какую-то переменную. Есть ли какая-либо предопределенная функция tk_ *?запись в новом окне

+0

Для этого не существует предопределенного диалога. Так как на самом деле это не так уж и много кода, никто никогда не ходит туда, особенно потому, что в любом случае обычно требуется немного дополнительной настройки, характерной для конкретного варианта использования. –

ответ

0

вы должны создать еще одно окно с командой ок верхнего уровня

% set top [toplevel .top] 
.top 
% focus $top 
% grab $top 
% set entryBox [entry $top.ent -textvariable x] 
.top.ent 
% pack $entryBox 
% set btn [button $top.btn -text "Click Me"] 
.top.btn 
% pack $btn 
0

Эта процедура:

proc entrybox varName { 
    set top [toplevel .top[clock seconds]] 
    entry $top.eb -textvariable $varName 
    button $top.bu -command [list incr ${top}done] -text OK 
    pack {*}[winfo children $top] 
    vwait ::${top}done 
    unset -nocomplain ::${top}done 
    destroy $top 
} 

когда дается глобальным или полным имя, создает новый интерпретатор диалог с записью и а кнопка. Он ждет нажатия кнопки, а затем разрушает диалог верхнего уровня. Текст в поле ввода остается в переменной.

Документация: button (widget), clock, destroy, entry (widget), incr, list, pack, proc, set, toplevel, unset, vwait, winfo, {*} (syntax)

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