●●●●TCL/TKなら俺に聞け 4●●●● (542レス)
1-

447: 445 2021/08/29(日)17:58 ID:tV86Jpzl(2/3) AAS
>>446

うん・・・それは私もそう思うけど
英語読めないと我が儘はいえんのよ(´・ω・`)

お互い英語の学習を頑張りましょう
448: 445 2021/08/29(日)19:35 ID:tV86Jpzl(3/3) AAS
翻訳していただいた方には本当に感謝をしております
449: 2021/10/16(土)00:03 ID:tJlxm3AW(1) AAS
macosでx11対応のTcl/Tkをインストールしたいのですが...

もともと標準で入っているのですが、x11クライアントではないようです。
ソースコードからインストールすればいいのでしょうか?
まだ試してないですがmacで普通に./configureとかしてうまくいくでしょうか。

ご存知でしたら教えてください。mac捨てろとかはなしでお願いします。
450: 2021/10/22(金)20:26 ID:cl4NFqCg(1) AAS
ソースコードから--with-xをつけてインストールできたけど
wish起動するとX11じゃなくてmacのウィンドウが出る。
どうすればいいのやら
451: 2021/10/24(日)21:55 ID:3CkopFKt(1) AAS
PATHが もともとMacに入ってる /usr/bin/wish を優先してるとかじゃないの?
452
(1): 2021/10/25(月)00:22 ID:6Otl3mCz(1) AAS
レスありがとうございます。
新しくできたwishを起動してもX11じゃないウィンドウが出ます。
もうちょっと頑張ってみます。
453: 2021/10/25(月)12:22 ID:17kCASnx(1) AAS
mac知らんけど
普通に考えればOSX 上で独自Xクライアント起動して
そのXのターミナルからwish起動しないといけないだろう

>新しくできたwishを起動してもX11じゃないウィンドウが出ます。
OSXのX相当のものから起動できてるのなら
X11にこだわらなくていいんじゃないの?

まさにこれはtcl/tkは関係なくmac捨てろという話になるな
454: 2021/10/26(火)13:08 ID:5yCnFias(1) AAS
>>452
動作環境: macOS High Sierra ver.10.13.6
以下のレシピで tk X11版がmakeできました
( homebrewで入れたtck/tk aqua版に満足しているので make install はしていません )

$ tar xf tk8.6.11.1-src.tar.gz
$ cd tk8.6.11/unix
(tk8.6.11/macosx だと指定オプションを無視してaqua版を作ってしまうようです)

$ CFLAGS="-I/usr/local/opt/tcl-tk/include" ./configure --enable-64bit --with-tcl=/usr/local/opt/tcl-tk/lib --with-x --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib
既にインストール済みのtclディレクトリに合わせて適宜書き換えてください
CFLAGS=... を付けないと /usr/include/tcl.h (ver8.5) を参照しようとして make error になります

$ make
$ otool -L ./wish
libX11 etc. を参照している事を確認

$ install_name_tool -change /usr/local/Cellar/tcl-tk/8.6.11_1/lib:/usr/X11/lib/libtk8.6.dylib $PWD/libtk8.6.dylib ./wish
インストールせずに動作チェックをしたい! (change箇所はotoolの出力を見れば分かります)

$ ./wish
pack [button .b -text {こんにちは X11}]
.b conf -font {{ヒラギノ丸ゴ Pro} 128} -bg #0ff -fg #f0f

$ rm ./wish && make install
インストール
455: 2021/10/26(火)21:25 ID:FIjDTn2o(1/2) AAS
ありがとうございますぅ

macosxで作業しててうまく行かなかったのですが、
その後ログをよくよくみたらX11のオプションを無視して
わざわざunix/configreを呼び出してたので、
最初からunixに移動してconfigureしたらうまくいきました。

一応自己解決しましたが、454さんのレス見てからやればもっと楽できたのに。

ちなみに自分の環境もHigh Sierraですが、これでいけました。

cd ./tcl8.6.11/unix/
./configure
make
sudo make install

cd ../../tk8.6.11/unix/
./configure --with-x --with-tcl=/usr/local/lib/tclConfig.sh
make
sudo make install

ふぅ
456: 2021/10/26(火)21:44 ID:FIjDTn2o(2/2) AAS
あとX11にこだわる理由ですが、Tcl/Tkで自作したGUIツールのウィジェットに
gnuplotのグラフを表示させるためです。

  set win [winfo id .c]
  set gp [open "| gnuplot" w]
  puts $gp "set term x11 window '$win'"
  puts $gp "plot hogehoge"

みたいにやって、gnuplotに流し込むデータを変化させてぐりぐりやります。
もともとLinuxマシンでやってたのをmacに移植しようとしてます。
457: 2021/10/27(水)13:24 ID:wK8HKaYJ(1) AAS
winfo id の使い道、初めて知りました
3次元プロットのグリグリまで他アプリの画面に飛ばせる(試してみました)とかX11は自由度高いんですね
458: 2021/11/11(木)20:15 ID:ss69cckK(1) AAS
Tcl/Tkで四角じゃないウィンドウってできるのかな
丸いアナログ時計とかありそうだけど
459
(1): 2021/11/15(月)17:30 ID:orggkpZ4(1) AAS
素の Tcl/Tk で「丸いアナログ時計」作ってみた (mac版)
少し変えれば winでも出来ると思う
画像リンク


外部リンク:wiki.tcl-lang.org に方法が紹介されている.
変形ウィンドウ用の拡張パッケージも紹介されてる (試していない)
460
(1): 2021/11/16(火)22:14 ID:2BodVrOz(1) AAS
おお素晴らしい
見た目が透過するだけでもありがたいけど、透明なところクリックすると後ろのウィンドウがアクティブになったりする?
それができたら理想的なんだけど。

と思いつつメインで使ってるシステムで試そうとしたら、Linux版はwm attributeに-transparentがないようで...
残念です。
拡張のShapeはいきなり./configureでつまづいて、かなりハードル高そう
461: 2021/11/19(金)22:33 ID:OsKHDI1l(1/2) AAS
>>460
LinuxならTkZinc が動くと思います

リンク先の紹介では
TkZinc used to support it. Now the project seems to have vanished.
なんて書かれてますが
外部リンク:github.com にあります

mac (Tcl/Tk X11版)では一部手直しが必要でしたがmakeできました
Linuxならそのままで行けるでしょう
> 透明なところクリックすると後ろのウィンドウがアクティブになったりする?
これも出来ます ( >>459 では出来ませんでした)

package require Tkzinc
package require zincGraphics

pack [zinc .zc -width 600 -height 600 -render 1 -backcolor #fcc -lightangle 50]
# canvasウィジットに於ける oval, line, etc. の要領で
# zincウィジット(.zc)に パスを追加していきます

set coords {}
for {set i 0} {$i < 5} {incr i} {
set a [expr 3.141692*2/5*$i]
lappend coords [list [expr 300-200*sin(2*$a)] [expr 300-200*positivecos(2*$a)]]
}
set clip [.zc add curve 1 $coords -closed 1 -visible 0 -fillrule odd]

# パスアイテム(clip)の形状(※)によりトップレベルウィンドウをクリッピング
# ※サイズは勝手にスケールされてしまいます
.zc itemconf 1 -clip $clip
462: 2021/11/19(金)22:37 ID:OsKHDI1l(2/2) AAS
画像リンク

複合パス(.zc contour 〜)を使って xeyes を再現したかったのですがクリッピングすると形が乱れてしまい使い物になりませんでした.
長方形を長方形でくり抜いたような単純なパスならいけます. この辺りは mac特有の問題かもしれません
最後の after 100 main の小細工はそうしないとなぜかエラー吐いて落ちるからです. これも mac 特有の...

他にも回転やスケール機能なんかがあります
ドキュメントが貧弱ですが demoフォルダのサンプルが参考になりました
463: 2021/11/20(土)21:48 ID:EfeaK0DT(1) AAS
複合パスによるクリッピングがうまくいかない件
TkZinc のソースを軽く見た感じでは使われてる三角分割アルゴリズムが単純な形状しか想定してないようです
なので Linuxでも変わらないかと思います
ただし、代わりに自力で三角分割して .zc add triangles 〜 で座標列を渡せば穴開きでもなんでもいけます
とにかく領域を三角形で埋め尽くす、非連結な領域間も潰れた三角形で橋渡しすればOKです

package require Tkzinc
package require zincGraphics
pack [zinc .zc -width 600 -height 600 -render 1 \
-highlightthickness 0 -backcolor white -lightangle 50]

set n 64
set coords {}; foreach xc {150 450} {
for {set i 0} {$i <= $n} {incr i} {
set a [expr 3.141592*2/$n*$i]
lappend coords [list [expr $xc+150*sin($a)] [expr 300-300*cos($a)]] \
[list [expr $xc+ 50*sin($a)] [expr 300- 100*cos($a)]] \
}
if {$xc == 150} {
lappend coords {150 0} {150 0} {450 0}
}
}
set clip [.zc add triangles 1 $coords -visible 0]
.zc itemconf 1 -clip $clip

画像リンク

やりたかった xeyesモドキが出来ました
464: 2021/11/24(水)00:38 ID:hZTuTUPb(1) AAS
スゴイ、頑張ればいろいろできるんですね。

ただこちらの環境ではTkZincもインストールのハードルがやっぱり高そうです。
configureでTcl/Tkのインストール情報を参照するところからつまづいてます。
自分は職場のLinuxマシンのいちユーザーで
基本的にインストール的なことはユーザー権限でしかできないため
プリインストールのTcl/Tkに拡張機能を追加するのはなかなか難しいです。

今回いろいろ紹介していただいてかなり勉強になりました。
ググってもなかなかたどり着けない情報で、ありがたいです。
465: 本田 2021/12/01(水)06:14 ID:1Uo/TpOg(1) AAS
GitHub - avl42/tcl-bitcoin: Bitcoin-related stuff using the scripting language Tcl(/Tk)
外部リンク:github.com
466
(2): 2022/01/14(金)17:58 ID:t9iJHcg/(1) AAS
すみません、最近Tcl/Tk触り始めたんだけど、c言語で、
Tcl_FindExecutable(argv[0])
を書かないとGUIの日本語が文字化けするっていうのは常識なの?
一時間くらいハマったよ
467
(1): 2022/01/17(月)13:14 ID:OGoMBcpZ(1) AAS
>>466
[ generic/tclEncoding.c ]
Tcl_FindExecutable(
const char *argv0) /* The value of the application's argv[0]
* (native). */
{
TclInitSubsystems();
TclpSetInitialEncodings();
TclpFindExecutable(argv0);
}

・TclInitSubsystems は Tcl_CreateInterpでもコールされているので二度手間
・Tcl_FindExecutable のコールで内部エンコーディングがセットされているなんて分かりにくい

ユーザーとしては Tcl_SetSystemEncoding を使う方が意図が明らかで良いと思いました

// Tcl_FindExecutable(NULL);
Tcl_Interp *tcl = Tcl_CreateInterp();
Tcl_SetSystemEncoding(NULL, "utf-8"); // 環境変数を見に行かなくても決め打ちで良いでしょう
468: 466 2022/01/18(火)08:55 ID:OTNPHSfm(1) AAS
>>467
なるほど、おまじないの中はそういう実装だったのか。ありがとうございます。
469
(1): 2022/02/05(土)18:13 ID:w4TOp0V+(1) AAS
ちょっとした疑問。
pack [button .b1 -text B1 -command {destroy .b1}]
pack [button .b2 -text B2]
bind .b2 <ButtonRelease-1> {destroy .b2}

.b1をクリックすると.b1が消える。(予想通り)
.b2をクリックすると.b2が消えて、その後エラー発生(invalid command name ".b2")。
どうもbindされたアクションを実行した後、-commandがあってもなくても.b2を実行しようとしてエラーになるみたい。
これって正常な動作なんでしょうか。
8.5と8.6で同じ動作だったから、こういうもんだと思うしかないのかな。
470
(1): 2022/02/11(金)15:48 ID:q5CIic8J(1) AAS
>>469
ボタンはクリックにあわせてイメージ更新するけど、先にdestroyが動いて、イメージ更新するときには
.b2が無くなってるんじゃないかな?

どうしてもbindからdestroyしたいなら、after idleで後回しにすれば動くと思う。(試してない)
bind .b <buttonrelease> { after idle { destroy .b }}

buttonpressでも動くかどうかは知らない。
471: 2022/02/14(月)19:42 ID:FA+PnMJi(1) AAS
>>470

ありがとうございます。after idleうまくいきました。
.b2がinvokeされたあとでdestroy .b2が実行されました。
472: 2022/03/21(月)22:25 ID:kKOtd3Ut(1) AAS
保守してみます
473: 2022/03/27(日)07:44 ID:e2GynfHU(1) AAS
いまでもTcl/Tkって現役なんだね
Macでもつかえるなら勉?しようかな
474: 本田 2022/04/14(木)21:35 ID:5sOyJ4MB(1) AAS
DoS
外部リンク:wiki.tcl-lang.org
アノニマスとは ロシアにサイバー戦、過去に日本も被害: 日本経済新聞
外部リンク:www.nikkei.com
反ロシア、サイバー「義勇兵」相次ぎ参戦 国境なき攻防
外部リンク:www.nikkei.com
475
(1): 2022/04/20(水)23:49 ID:UqzWtfWz(1) AAS
変数置換がなければこれらは同等と考えていいんだろうか?
  set lst {a b c}
  set lst "a b c"
  set lst [list a b c]

空リストをセットするにはこれらも同等なのだろうか?
  set lst {}
  set lst [list]

パフォーマンス的には下は無駄な気もするけど。
476: 2022/06/16(木)00:33 ID:Wk96MiCq(1) AAS
保守?
1-
あと 66 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.023s