LoginSignup
12
11

tcl/tk(macOS) そのままでも動くのに罠5つに嵌った

Last updated at Posted at 2018-02-27

tcl/tk

tcl/tkのスクリプトを陽に起動するのは20年ぶりぐらい。

右も左もわからないまま、ある本のスクリプトがエラーになるので資料を整理。
Macintoshの10.9(?)以降はTcl/Tkが導入済み?らしい。

<この項は書きかけです。順次追記します。>

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 上で使う場合に

bash
$ 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

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(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.

このエントリーをはてなブックマークに追加

12
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11