Использование одной и той же метки в процедуре и увеличение строки метки - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу иметь возможность увеличивать строку в рамке метки, нажимая кнопку.

Я пробовал приведенный ниже код, но он не работает. Я думаю, что это может быть потому, что я использую тот же лейбл. Я попытался вручную поместить одну и ту же переменную в строки 0 и 1, и она отображается только в строке 0, поэтому не уверен, что происходит.

Увеличение $ add_row работает с путами до и после размещения метки в строке.

global newrow 
set newrow 1
tk::labelframe .ss -text "Sequence Select" -pady 10
tk::label .ss.seq_no_lb -text "Seq #" -justify center -width 5
tk::button .enter -borderwidth 1 -height 1 -text "Enter" -width 5 -command    incrow
pack .enter 

proc incrow {} {
    global newrow
    place .ss -x 0 -y 0
    puts "row before new grid is $newrow"
    grid .ss.seq_no_lb -row $newrow 
    incr newrow
    puts "row after new grid is $newrow"
}

Есть идеи?

РЕДАКТИРОВАТЬ - Возможно, будет лучше, если я объясню, что я хочу сделать.

Прикрепленное изображение - это то, как приложение выглядит до сих пор.

Идея состоит в том, чтобы включить серию реле, выбранных с помощью флажков. (1) Вы выбираете первую последовательность, нажимаете ввод и поворот X к 1 или 0 (2) чтобы добавить еще одну последовательность, нажмите add, что создаст еще одну строку с именем Seq 2 и покажет х (3) Затем вы начинаете последовательность (4) каждая последовательность будет иметь выбираемое пользователем время, в течение которого должна выполняться каждая последовательность.

App

1 Ответ

0 голосов
/ 06 сентября 2018

Хорошо, есть более простые альтернативы, но это возможно сделать. Например,

set Rows 10
set newrow 0
grid [labelframe .ss -text "Seq #" -pady 10 -height 200 -width 50  -bg green]
for {set i 0 } { $i < $Rows } {incr i} {
     grid rowconfigure .ss $i -weight 1 -uniform 1
}

grid propagate .ss 0
label .ss.seq_no_lb -bg red
grid [button .enter -borderwidth 1 -height 1 -text "Enter" -width 5 -command incrow]

proc incrow {} {
    global newrow Rows
    .ss.seq_no_lb configure -text "Seq $newrow"
    grid .ss.seq_no_lb -row  $newrow    
    incr newrow
    if {$newrow  == $Rows} {
    .enter configure -state disabled
    }
}

Секреты

  1. Распространение до нуля

  2. Примените вес для каждой строки

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

Saludos

...