LINUX.ORG.RU

Tcl в 2016 году.

 ,


3

3

Вроде неплохой язык, выучился довольно просто, батареек огромное количество на все случаи жизни, работает почти везде, в т.ч. и под виндой, есть Tk чтобы быстро накидать простой гуй. Все меня в нем устраивает, но почему он так мало распространён? Ведь есть же всё, чтобы писать код и решать задачи. Не загнется ли он в ближайшее время из-за малого сообщества и падающей популярности? Что с ним не так?

★★★★

кстати, в тему

https://www.tcl.tk/community/tcl2016/index.html

23rd Annual Tcl/Tk Conference (Tcl'2016)
November 14 - 18, 2016
Crowne Plaza Houston River Oaks
Houston, Texas, USA
2712 Southwest Freeway, 77098
Phone: 1-713-5238448
Fax: 1-713-5771273

anonymous
()

Товарищи, поделитесь примером, кто как в Tcl/Tk приложениях из главного окна окошки создает. А то я свелосипедил кое-что, но чую, что можно как-то красивее что-ли это сделать.

settings.tcl

source utils.tcl

namespace eval ::settings {
    # базовые параметры
    # настраиваются тумблерами на главной плате
    variable basic_params [list "Sound" "Segment Indicator" "GPS" "Logger" "Unused1" "Unused2" "Free Walk"]
    variable basic_values
    
    # размер колёс
    # 0 - маленькие, 1 - большие
    variable wheels_type 0
    
    # ускорение
    # мс, между наращиванием скорости, 
    # от 0 до ...
    variable smooth_start 3
    
    proc diacfg {} {
        variable basic_params
        variable basic_values
        variable wheels_type
        variable smooth_start
        
        catch {destroy .diacfg}
        set w [toplevel .diacfg]
        wm title $w "Settings"
        if {[is_android]} {
            wm attributes $w -fullscreen 1
        }
        # место для вкладок + кнопки применить/отмена
        pack [ttk::notebook $w.tabs] -fill both -expand 1 -padx 10 -pady 10
        pack [frame $w.b] -fill x -expand 0 -padx 1 -pady 1
        pack [ttk::button $w.b.ok -text "Accept" -command [list ::settings::accept $w]] -padx 3 -pady 3 -side right
        pack [ttk::button $w.b.cancel -text "Cancel" -command [list ::settings::cancel $w]] -padx 3 -pady 3 -side right
        # вкладки
        frame $w.tabs.basic
        frame $w.tabs.extended
        $w.tabs add $w.tabs.basic -text "Basic"
        $w.tabs add $w.tabs.extended -text "Extended"
        # вкладка basic
        foreach cb_name $basic_params {
            set wname [widget_name $cb_name]
            ttk::label $w.tabs.basic.${wname}_label -text $cb_name
            checkbutton $w.tabs.basic.${wname}_cb -variable ::settings::basic_values($cb_name)
            grid $w.tabs.basic.${wname}_label $w.tabs.basic.${wname}_cb -sticky e
        }
        grid columnconfigure $w.tabs.basic 0 -weight 1
        # вкладка extended
        ttk::label $w.tabs.extended.wheels_lbl -text "Wheels"
        ttk::combobox $w.tabs.extended.wheels_cb -values [list "Small (92mm)" "Big (125mm)"] -state readonly 
        $w.tabs.extended.wheels_cb current $wheels_type
        grid $w.tabs.extended.wheels_lbl $w.tabs.extended.wheels_cb -sticky news
        ttk::label $w.tabs.extended.smooth_start_lbl -text "Smooth start (ms)"
        ttk::spinbox $w.tabs.extended.smooth_start_sb -from 0 -to 10 -increment 1
        $w.tabs.extended.smooth_start_sb set $smooth_start
        grid $w.tabs.extended.smooth_start_lbl $w.tabs.extended.smooth_start_sb -sticky news
        grid columnconfigure $w.tabs.extended 1 -weight 1
    }

    proc accept {w} {
        variable basic_params
        variable basic_values
        variable wheels_type
        variable smooth_start

        foreach param $basic_params {
            puts "$param = $basic_values($param)"
        } 
        set wheels_type [$w.tabs.extended.wheels_cb current]
        destroy $w
    }

    proc cancel {w} {
        puts "cancel"
        destroy $w
    }
}

::settings::diacfg

utils.tcl

proc is_android {} {
	# проверяет, на андроиде запущено или нет
	if {[catch {borg} result]} {
		return false
	} else {
		return true
	}
}

proc widget_name {str} {
	set result [string tolower $str]
	set result [string map {" " "_"} $result]
	return $result
}

WRG ★★★★
() автор топика
Ответ на: комментарий от anonymous

Что не так с set и expr? С ним много чего не так, но не это.

Gentooshnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.