M.Hiroi's Home Page

Tcl/Tk GUI Programming

Tcl/Tk お気楽 GUI プログラミング実用編

[ Home | Tcl/Tk | Tcl/Tk入門 ]

●名前空間

リスト : 名前空間の使用例1

proc test_foo {} {
    puts "Global foo!!"
}

namespace eval Foo {
    variable foo 100

    proc test_foo {} {
        variable foo
        puts "Foo::foo is $foo"
    }

    proc test_bar {} {
        # Foo::test_foo を呼び出す
        test_foo
        # グローバルな test_foo を呼び出す
        ::test_foo
    }
}

namespace eval Bar {
    proc test_bar {} {
        # グローバルな test_foo を呼び出す
        test_foo
    }
}

puts $Foo::foo
Foo::test_bar
Bar::test_bar
C>tclsh test00.tcl
100
Foo::foo is 100
Global foo!!
Global foo!!
リスト : 名前空間の使用例2

proc test_foo {} {
    puts "Global foo!!"
}

namespace eval Foo {
    variable foo 100

    proc test_foo {} {
        variable foo
        puts "Foo::foo is $foo"
    }

    proc test_bar {} {
        # Foo::test_foo を呼び出す
        test_foo
        # グローバルな test_foo を呼び出す
        ::test_foo
    }

    namespace eval Bar {
        variable bar 200

        proc test_bar {} {
            # グローバルな test_foo を呼び出す
            test_foo
        }
    }
}

puts $Foo::foo
puts $Foo::Bar::bar
Foo::test_bar
Foo::Bar::test_bar
C>tclsh test01.tcl
100
200
Foo::foo is 100
Global foo!!
Global foo!!
リスト : 名前空間の使用例3

namespace eval Foo {
    namespace export foo bar

    proc foo {} {
        puts "foo!!"
    }

    proc bar {} {
        puts "bar!!"
    }

    proc baz {} {
        puts "baz!!"
    }
}

namespace eval Bar {
    namespace import ::Foo::*
    namespace export baz

    proc baz {} {
        foo
        bar
   }
}

namespace import Bar::*
baz
Foo::baz
C>tclsh test02.tcl
foo!!
bar!!
baz!!
リスト : 名前空間の使用例4

namespace eval Hello {
    variable var {Hello World} cnt 0 end 0

    proc print {} {
        variable var
        variable cnt
        variable end
        puts $var

        incr cnt
        if {$cnt >= 10} {
            set end 1
        } else {
            # after 500 Hello::print でも動作する
            after 500 [namespace code print]
        }
    }
}

Hello::print
vwait Hello::end
C>tclsh test03.tcl
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

C>

●辞書

% set d [dict create foo 10 bar 20 baz 30]
foo 10 bar 20 baz 30
% dic exists $d foo
1
% dic exists $d oops
0
% dic get $d bar
20
% dic get $d oops
key "oops" not known in dictionary
% dict set d baz 300
foo 10 bar 20 baz 300
% dict get $d baz
300
% dict set d oops 40
foo 10 bar 20 baz 300 oops 40
% dict unset d foo
bar 20 baz 300 oops 40
% dict exists $d foo
0
% dict size $d
3
% set d [dict create a 0]
a 0
% dict append d a 1 2 3 4 5
a 012345
% dict set d b {1 2 3 4}
a 012345 b {1 2 3 4}
% dict append d b 5 6 7 8
a 012345 b {1 2 3 45678}
% dict lappend d b 9 10 11 12
a 012345 b {1 2 3 45678 9 10 11 12}
% dict lappend d a 9 10 11 12
a {012345 9 10 11 12} b {1 2 3 45678 9 10 11 12}

% set d [dict create a 1 b 2 c 3]
a 1 b 2 c 3
% dict incr d a
a 2 b 2 c 3
% dict incr d b
a 2 b 3 c 3
% dict incr d c
a 2 b 3 c 4
% dict keys $d
a b c
% dict values $d
2 3 4
% dict for {k v} $d {
puts $k
puts $v
}
a
2
b
3
c
4

●Ttk Widget の基礎知識


●コンボボックス

表 : combobox のオプション
-heightリストボックスの行数
-widthエントリーの文字数
-statenormal : エントリーとリストボックスの両方から入力できる
readonly : リストボックスのみ有効
disabled : どちらも無効
valuesリストボックスに表示するデータを格納したリスト

初期状態

日付の入力

エラー


●ノートブック

初期状態 (Button が選択されている)

Radio を選択

Check を選択

初期状態

Memo1 を生成

Memo2 を生成

Memo3 を生成して Memo2 を削除


●プログレスバー

初期状態

途中経過

pb1 が終了し、pb2 を停止した状態


●ツリービュー

初期状態

クラス A を表示

クラス A と C を表示

全クラスを表示

Alice を選択

エントリーで身長を入力

リターンキーで更新


Copyright (C) 2019 Makoto Hiroi
All rights reserved.

[ Home | Tcl/Tk | Tcl/Tk入門 ]