Примеры Tcl/Tk?

То, что заполнение внизу на самом деле вызвано стилем рамки-тени, связанным со свойством «возвышения» Paper (на котором основан Card). Установка высоты на 0 избавляет от этого:


Однако это также избавляет от выпуклого вида карты. Правильный способ справиться с этим - указать изображение в элементе CardMedia, а не использовать отдельный тег img внутри элемента CardContent.


Вот CodeSandbox, показывающий это:

Edit kl6m1kv3o

Вы также можете увидеть этот подход, используемый в этой демонстрации:

https://material-ui.com/demos/cards/#ui-controls

11
задан Bryan Oakley 6 October 2008 в 14:19
поделиться

4 ответа

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

package require Tk

proc main {} {
    if {[lsearch -exact [font names] TkDefaultFont] == -1} {
        # older versions of Tk don't define this font, so pick something
        # suitable
        font create TkDefaultFont -family Helvetica -size 12
    }
    # in 8.5 we can use {*} but this will work in earlier versions
    eval font create TkBoldFont [font actual TkDefaultFont] -weight bold

    buildUI
}

proc buildUI {} {
    frame .toolbar
    scrollbar .vsb -command [list .t yview]
    text .t \
        -width 80 -height 20 \
        -yscrollcommand [list .vsb set] \
        -highlightthickness 0
    .t tag configure command -font TkBoldFont
    .t tag configure error   -font TkDefaultFont -foreground firebrick
    .t tag configure output  -font TkDefaultFont -foreground black

    grid .toolbar -sticky nsew
    grid .t .vsb  -sticky nsew
    grid rowconfigure . 1 -weight 1
    grid columnconfigure . 0 -weight 1

    set i 0
    foreach {label command} {
        date     {date} 
        uptime   {uptime} 
        ls       {ls -l}
    } {
        button .b$i -text $label -command [list runCommand $command]
        pack .b$i -in .toolbar -side left
        incr i
    }
}

proc output {type text} {
    .t configure -state normal
    .t insert end $text $type "\n"
    .t see end
    .t configure -state disabled
}

proc runCommand {cmd} {
    output command $cmd
    set f [open "| $cmd" r]
    fconfigure $f -blocking false
    fileevent $f readable  [list handleFileEvent $f]
}

proc closePipe {f} {
    # turn blocking on so we can catch any errors
    fconfigure $f -blocking true
    if {[catch {close $f} err]} {
        output error $err
    }
}

proc handleFileEvent {f} {
    set status [catch { gets $f line } result]
    if { $status != 0 } {
        # unexpected error
        output error $result
        closePipe $f

    } elseif { $result >= 0 } {
        # we got some output
        output normal $line

    } elseif { [eof $f] } {
        # End of file
        closePipe $f

    } elseif { [fblocked $f] } {
        # Read blocked, so do nothing
    }
}


main
12
ответ дан 3 December 2019 в 06:00
поделиться

Некоторые предложения:

Для добавления вывода к текстовому виджету, вместо того, чтобы указать строку 999999, можно использовать индексный конец, который относится к положению сразу после последней новой строки. Например,

.main insert end "$x\n"

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

.main see end

Можно также хотеть рассмотреть захват вывода команды асинхронно, при помощи команды fileevent.

4
ответ дан 3 December 2019 в 06:00
поделиться

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

#!/usr/bin/wish

proc push_button {} {
    put_text
    .main see end
}

proc put_text {} {
  set f [ open "| date" r]
  while {[gets $f x] >= 0} {
    .main insert end "$x\n"    
  }
  catch {close $f}
}

button .but -text "Push Me" -command "push_button"
text .main -relief sunken -bd 2 -yscrollcommand ".scroll set"
scrollbar .scroll -command ".main yview"

pack .but
pack .main -side left -fill y
pack .scroll -side right -fill y
3
ответ дан 3 December 2019 в 06:00
поделиться

wiki.tcl.tk является хорошим веб-сайтом для всех видов примеров

1
ответ дан 3 December 2019 в 06:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: