tcl/tk
tcl/tkのスクリプトを陽に起動するのは20年ぶりぐらい。
右も左もわからないまま、ある本のスクリプトがエラーになるので資料を整理。
Macintoshの10.9(?)以降はTcl/Tkが導入済み?らしい。
<この項は書きかけです。順次追記します。>
macOS Sierra 10.12.6
macOS Sierra 10.12.6で確認。ちなみに、Macintosh に入っているTcl/Tkのwishというシェルは次のように2つあった。
$ ls -al /usr/bin/wish*
lrwxr-xr-x 1 root wheel 7 12 28 2016 /usr/bin/wish -> wish8.5
-r-xr-xr-x 1 root wheel 127 7 31 2016 /usr/bin/wish8.4
-r-xr-xr-x 1 root wheel 127 7 31 2016 /usr/bin/wish8.5
罠1. tcl/tkが入っていないと思い導入しようとした
$ brew install tcltk
* snip *
Error: No available formula with the name "tcltk"
罠2. 綴(つづ)りを間違えた。
$ brew install tkltk
Error: No available formula with the name "tkl-tk"
罠3. tcl/tkのbrewパッケージがtcl-tkだと知らなかった。
$ brew install tcl-tk
* snip *
/usr/local/Cellar/tcl-tk/8.6.8: 2,849 files, 29.2MB
罠4. PATHを切り忘れた
$ printenv
* snip
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/arm-unknown-linux-gnueabihf/bin
PATHの前の方に、古い版が残っていると新しい版が動かない。
echo 'puts $tcl_version;exit 0' | wish
8.5
罠5. PATHの切り方を間違えた。
Macintoshでtcl/tkがうまくないという記事を見て
$ brew install tcl-tk
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/tcl-tk-8.6.8.sierra.bottle.
######################################################################## 100.0%
==> Pouring tcl-tk-8.6.8.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because tk installs some X11 headers and macOS provides an (older) Tcl/Tk.
If you need to have this software first in your PATH run:
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.bash_profile
For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/tcl-tk/lib
CPPFLAGS: -I/usr/local/opt/tcl-tk/include
For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/tcl-tk/lib/pkgconfig
==> Summary
/usr/local/Cellar/tcl-tk/8.6.8: 2,849 files, 29.2MB
最新の8.6が導入できた。ただ、古いのは当初から入っている。どう切り替えるか。
path
$ printenv
TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.w3cos4WaMR/Render
TERM_PROGRAM_VERSION=388.1.1
TERM_SESSION_ID=6379DDD6-E51B-4C0B-B5E4-3D546D9DC515
USER=brew_manager
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.pdnce1fGFu/Listeners
__CF_USER_TEXT_ENCODING=0x1F6:0x1:0xE
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin
...
brewで導入したtcl/tkにPATHが切れていない。
$ echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
PATHを追加。確認。
$ printenv
TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.w3cos4WaMR/Render
TERM_PROGRAM_VERSION=388.1.1
TERM_SESSION_ID=6379DDD6-E51B-4C0B-B5E4-3D546D9DC515
USER=brew_manager
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.pdnce1fGFu/Listeners
__CF_USER_TEXT_ENCODING=0x1F6:0x1:0xE
PATH=/usr/local/opt/tcl-tk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin
PWD=/Users/administrator
LANG=ja_JP.UTF-8
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
HOME=/Users/brew_manager
SHLVL=2
LOGNAME=administrator
_=/usr/bin/printenv
文字コード
例えば Linuxx 上で 保存したfile を Macintosh 上で使う場合に
$ nkf -s file >! file.tcl
で Shift+JIS に。
参考文献(reference)
Tcl/Tk GUI Programming Tcl/Tk お気楽 GUI プログラミング入門編
http://www.geocities.jp/m_hiroi/tcl_tk_doc/tcltk101.html
Wish Tcl/Tk 入門
http://flex.phys.tohoku.ac.jp/texi/wish-nyumon/how-to-run.html
参考文献 @ Qiita
Tclで複数の変数に同じ値を設定する
https://qiita.com/natsutan/items/6cee6848db83ab0ddd32
Tclの配列を簡単にシリアライズする方法
https://qiita.com/natsutan/items/3a5757b7a21aacd25ec8
リストの中の最大値を求める
https://qiita.com/natsutan/items/9ecdb5fe1c9bca4ddb0d
配列にもリストにも使えるmember関数
https://qiita.com/natsutan/items/075940362ed9d4aa8259
Tcl/Tkでステータスバーを作る
https://qiita.com/natsutan/items/37927112887fdcb42f19
Tcl/Tkで物理シミュレーション
https://qiita.com/ulabiisutokyo/items/f5cf6edf2caa814df107
Tcl/TkでHello, world!
https://qiita.com/qoLop/items/b121261d3406611d0f19
tcl/tkで画像をリサイズする
https://qiita.com/miminashi/items/c2e66e98249f000a9d48
Tcl/Tkでプログラムを書く(1)
https://qiita.com/akinori-ito/items/92ca39617773a2f48e0b
Tcl/Tkでプログラムを書く(2)
https://qiita.com/akinori-ito/items/a6abe82f4c814272f06c
Tcl/Tkでプログラムを書く(3)
https://qiita.com/akinori-ito/items/919edfd6c52cf0b37247
Tcl/Tkでステータスバーを作る
https://qiita.com/natsutan/items/37927112887fdcb42f19
WindowsでgccでC言語で簡単にGUI(Tcl/Tk)
https://qiita.com/gpsnmeajp/items/d69c51cbd34d8178daf9
Visual Studio 2017でTcl/Tk 8.6.9をコンパイルする
https://qiita.com/tenomoto/items/4459bbd6bd86871acb8b
マルチプラットフォームGUI作りに挑戦 ~tcl/tkの環境構築~
https://qiita.com/jmtsn/items/76314010647c15113920
Tcl/Tkで湯婆婆を実装してみる
https://qiita.com/qoLop/items/11f0678eeb83003903b8
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
文書履歴(document history)
ver. 0.01 初稿 20180227
ver. 0.02 追記 20180323
ver. 0.03 参考資料加筆 20201220
ver. 0.04 体裁整備 20210722
ver. 0.05 ありがとう追記 20230513
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.