●●●●TCL/TKなら俺に聞け 4●●●●
いやTcl/Tkは「馬鹿でも使える」ように設計されてるだろ とマジレス ActiveTcl 8.6.8出てる。 wiki.tcl.tk が wiki.tcl-lang.org になってるみたいだけど、アナウンスか何かあった? 見た目は変わってる。内容は以前の wiki.tcl.tk から移行みたい。(確証無) wiki.tcl.tk を開くと wiki.tcl-lang.org に転送されたわ .tk は過疎るとドメインごと消えるときあるから移行してくれて安心 へえ。 tcl.tkとtcl-lang.orgはほぼ同一ページだが飛ばされはしないな。 Tcl/Tkにすべてをかけて玉砕したビットウォークという会社があってだな Tcl/Tk による I18N(国際化) プログラミングの試み http://www.yk.rim.or.jp/ ~kawagisi/i18n-tcltk-programing.html あの新しい情報と古い情報とサンプルコードと議論とコメントとリンク切れリンクなんでもごちゃまぜバームクーヘンみたいになってるwikiを整理したらもうちょっと人気が出るんじゃないの skd.kitをunwrapしてできた skd.vfs\doc\skd.tkd を読みたいのですが doc\〜.tkd を読むソフトと方法とかってどなたかご存知ですか Tkの趣旨に反するけど Tk-GTK+とかTk-Metroみたいに各種OSのツールキットライブラリと動的リンクして 同じプログラムでもそれが実行されたプラットフォームのUIに合わせられたらかっこいいかもね GNU/Linuxでの透過ウィンドウやWindows 10のフラットテーマとかと協調できたらモチベーションも上がるし。 tclにはこのまま廃れてロストテクノロジーとして10年後くらいに発掘されてほしいわ マジでQZってなんだ?検索してもソフトウェア開発のWebページしかそれっぽい情報がねえw >>303 Swingじゃなくて、AWTとかSWTだな。 ビットウォークの名前が過去ログの2から消えてる 過去のレガシーがまったく受け継がれてないわけだ 本田が2003年からいてワロタ Python3.7でTKinterを試したところHiDPI環境では 低解像度のものが拡大されて表示されてしまうようです。 >>> import tkinter >>> tkinter.TkVersion としたところ8.6でした。 HiDPI環境で拡大表示ではなく、 大きいサイズのフォントで適切に表示する方法はないのでしょうか? >>314 求めている回答ではないかも知れませんが、 tk scalingコマンドでスケーリングを変更できるようになっています。 Windows上でwishを起動して以下のコマンドを実行したところ 1.0と3.0では、フォントの大きさに違いがでることを確認できました。 (Tcl-Tk) 1 % tk scaling 1.3333333333333333 (Tcl-Tk) 2 % tk scaling 1.0 (Tcl-Tk) 3 % label .l0 -text "Hello!" .l0 (Tcl-Tk) 4 % pack .l0 (Tcl-Tk) 5 % TKinterは使った事がないですが、こんな感じですかね? root = Tk()kisxe root.tk.call('tk', 'scaling', 2.0)」 標準(72 dpiモニターに相当)の1.0倍に変更してフォントサイズで指定 するようにしてみてはどうでしょうか? >>316 返信有難うございます。 英語があまり得意ではないのですがTclTKはHiDPIに対応してないみたいですね。 tk scalingも試してみたのですがスケーリングを2倍にすると表示も二倍になってしまいました(^_^;) ちょっとややこしいですが、 ・Windowsのスケーリングを二倍 ・Tkのスケーリングを1倍 ・フォントサイズを10 という感じにすると フォントサイズが20になってくれればくっきり表示されるのですが フォントサイズ10の文字が二倍に拡大されて表示される、という状態です。 Tkのスケーリングを0.5倍にして、フォントサイズを20を直に指定して表示できるか試してみましたが 1.0以下は指定できないみたいで駄目でした。 GTKに入門してみたいと思います。 すみません解決しました。 python.exeを右クリック→互換性タブ→HiDPI設定をいじる tkinterの話だから変だとは思ってたが pythonの話かよ まじ死ねや すぐりふひとはtcl/tkから離れて幸せになれたのに本田と来たら・・・ tcltkで書いたものとtkinterで書いたものを比べたら 速度はtcltkの方が若干勝ってるんだけど tkinterで書いたものの方がスクロールはスムーズだったのと 大量にgrid入れたscrollableFrameのスクロールだと tkinterの方がヌルヌル動いたのでtkinterの勝ち tclは永遠に不滅ですか 少なくとも向こう10年くらいはメインストリームですか あのwindowsもtclで書かれているくらいだからな! python+tkinterで用が足りるのでtclは要らない子 tcl/tkはRを使ったデスクトップアプリを作るときに重宝する デスクトップアプリにこだわらずにshinyでwebアプリ作ればいいじゃんと言われれば返す言葉がないが set s [format "%d %d %d" 1 2 3] とかを set lst [list 1 2 3] から set s [format "%d %d %d" lst] あるいは set s [format "%d %d %d" *lst] みたいに書くことは出来ますか? 後者二つともエラーになるので あるとしたら正しい書き方は何ですか? 何がやりたいの? lstの要素が1、2、3で変数sの値を文字列"1 2 3"にしたいなら下のでいいけど set s $lst set s [format "%03d %03d %03d" $lst] みたいなのでもうまくいかないんです integer指定してるのに文字列食わしてるからじゃん set lst [list [expr 1] [expr 2] [expr 3]] set s [format "%03d %03d %03d" $lst] これでもダメでした>< tclでは全ての変数が文字列なんだからそりゃそうなる 数値1をリストlstに格納するときに数値1は文字列1に変換される set lst [list 1 2 3] set s [format "%03d %03d %03d" [lindex $lst 0] [lindex $lst 1] [lindex $lst 2]] これならエラーにならないんですが面倒なので もっと良い方法ありませんか? あと 335 さんの主張する仕様だと [lindex $lst 0] は文字列なので 333 さんの話と矛盾してる気がしますがどういうことでしょう 数値に変換できるときは勝手に変換してくれるんだね知らなかった 見当違いなこと言ってごめん なんとなくこれで行ける気もしたのでやってみたのですが set s [format "%03d %03d %03d" [list $lst]] だめでした>< もう一息な気がするのであきらめつかずモヤモヤしています 代行レスはここへ https://rosie.5ch.net/test/read.cgi/operatex/1549681970/160 160 名前: [Φ|(|´|Д|`|)|Φ] BBxed!! 臨時で名無しです[] 投稿日:2019/02/16(土) 13:42:57.64 お手数ですがよろしくお願いします。 【板名】プログラム技術 【スレ名】●●●●TCL/TKなら俺に聞け 4●●●● 【スレのURL】https://mevius.5ch.net/test/read.cgi/tech/1375678740/l50 【名前欄】代行経由 【メール欄】sage 【本文】↓ >>330 330さんが考えているような書き方は出来ないと思われる。 Tclのリストは空白区切りの単なる文字列です。 list 1 2 3 は3つの要素のリストを生成するが、 "1 2 3" という1つの文字列という扱いです。 よって、set s [format "%d %d %d" $lst] とすると、 set s [format "%d %d %d" "1 2 3"] のように置き換えられます。 求めている回答ではないかも知れませんが、ひと手間かけて以下 のようなことはできます。 リストの各要素をそれぞれ分離して別々の変数にするには、 lassignコマンドを使います。 set lst [list 1 2 3] lassign $lst x y z set s [format "%d %d %d" $x $y $z] これでどうでしょうか。 set lst [list 1 2 3] set s [eval "format {%02d %02d %02d} $lst"] これでいけました ほんとうにありがとうございました >>330 set s [format "%d %d %d" {*}[list 1 2 3] ] set lst [list 1 2 3] set s [format {%02d %02d %02d} {*}$lst] これでもいけました ほんとうにありがとうございました >>344 この書き方初めて見た いつもforeachで回してたけどこういう書き方もできるんだね んー expand でも検索したつもりだったのになー http://www.geocities.co.jp/SiliconValley/4137/dir1/tcltkevolution85.html >なお、{*}は、8.5がαリリースだったときには{expand}というトークンでして、 >このページにも長くそのように書いていましたが、 正式リリースに伴って{*}と変更されました。 >>324 OSと、tcl/tk, Python/Tkinter それぞれのバージョンと、バイナリパッケージでインストールしたなら、 パッケージの入手元は? >>328 tcl皆無にするなら、tkinterも動かないんわけだけど >>345 ver8.4迄はリストをバラして個別に適用するには、evalを使うのが"正統的裏技"だったがver8.5から{*}が導入されマニュアル8.6版のevalの項目ではこちらの使用が推奨されている。 ver8.6のマニュアルでは、eval,info,Tclの項目に小分けして{*}の説明が少しだけある。 同じ動作をさせてるつもりなのですが ぬるぬる感が明らかに違うので tkinter + tix https://ideone.com/0fB1OD Tcl/Tk + BWidget https://ideone.com/dpBcd3 違うものを比べてると言われればそうなのかも知れません >>349 *$lst じゃなくて {*}$lst って書かないといけないのは 文法仕様上前者が無理だったということかな 前者が実現出来ない理由が良く判らない >>351 多くの言語で、ポインタの内容を *str_pp の様に記す習慣がある。 紛らわしくないように "*" ではなく "{*}" を使用したのかも、単なる趣味かも、判りません 単なる変数展開と個々の引数としての展開では大きく違うからあえて冗長な書き方をすることでパッと見で両者の区別がつくようにしてるんじゃないかな >>354 やりたいことをもう少し具体的に…(やっぱり難しくてお手上げかもしれないが) >>332 set s [format "%03d %03d %03d" {*}$lst] [PDF]Catenation and Operand Specialization For Tcl Virtual Machine http://www.eecg.utoronto.ca/ ~tsa/theses/benjamin_vitale.pdf [PDF]Alternative dispatch techniques for the Tcl VM Interpreter http://www.cs.toronto.edu/ ~bv/tcl2005/tcl2005-vitale-zaleski.pdf [PDF]Alternative Dispatch Techniques for the Tcl VM http://www.cs.toronto.edu/ ~bv/tcl2005/tcl2005-slides.pdf tkinter の話で申し訳ないのですが、 tcltk側の関数が返してくる tcl形式リスト(文字列)をpython 形式のリストに変換するにはどうしたらいいのでしょうか? >>> import tkinter >>> root = tkinter.Tk() >>> root.tk.eval("package require math::fourier") '1.0.2' >>> root.tk.eval("math::fourier::dft %s" % tkinter._stringify([1, 2, 3]) ) '{6.0 0.0} {-1.499999999999999 0.8660254037844388} {-1.499999999999999 -0.8660254037844388}' math::fourier::dft (離散フーリエ変換) を例として取り上げました。 tkinter._stringify は丁度よくpython形式のリストを整形してくれます。 [1, 2, 3 ] → { 1 2 3 } ですが、その逆が分かりません。 解決しました。 eval を使わず、call を使えということですね。 >>> root.tk.call("math::fourier::dft", [1, 2, 3] ) ((6.0, 0.0), (-1.499999999999999, 0.8660254037844388), (-1.499999999999999, -0.8660254037844388)) よくみろ それは list じゃなくて tuple だ >>> list(map(list, root.tk.call("math::fourier::dft", [1, 2, 3]) )) [[6.0, 0.0], [-1.499999999999999, 0.8660254037844388], [-1.499999999999999, -0.8660254037844388]] できますた ActiveTcl 8.6 インストール場所変更する方法ありますか exe直接実行せずに 7zipとかで中身ほじりながら 自分で展開して必要なものだけ配置 あとは環境変数でOK >>371 370です。有難うございます。 windows7 ではインストール箇所固定で変更できませんでしたが、何故かwindows8.1ではあっさり指定可能でした。 狐につままれた気がします。 Next Scripting Framework https://next-scripting.org/xowiki/ NX is a highly flexible, Tcl-based, object-oriented scripting language. It is a descendant of XOTcl and was designed based on 10 years of experience with XOTcl in projects containing several hundred thousand lines of code. While XOTcl was the first language designed to provide language support for design patterns and to provide a highly dynamic programming environment, the Next Scripting Framework (NSF) and NX add to these features support for language-oriented programming. A Tcl -Tk Form Generator that can be used alone or used to provide a fast Form generation for language in which this activity can be complex https://www.codeproject.com/Articles/5247314/A-TCL-TK-Form-Generator https://sourceforge.net/projects/tcl/files/Tcl/8.6.10/ 2019-10-04 一年ぶりの更新。未だ配布候補版です。 Tcl Source CodeTimelineを見ると10/1の日付のこれが完成を意味したのかね? 2019-10-01 21:38 (hopefuly) fix build M.Hiroi氏のtcltkのページまさかの現在更新中? マイブームなのかな Hiroi氏のサイト、tcltk以外の言語も分かり易く要点がまとまってるので昔からお世話になってます。 8月から実用編ががっつり増えてるのな。 tailcall なんてのが使えるようになってたんだな。知らなかったよ。 385 です 少し慌てました。 正式な予告は次の様です。もうすぐのようです。 Tcl/Tk 8.6.10 Release Announcement November 21, 2019 Tk improvements on Mac OSX (including Catalina) / Aqua - internationalized text entry with IME とあったので試してみた。(macOS Sierra 10.12.6) ・tcl/tk 8.5.9 (macに標準インストール済 ) text widget/entry widget で IMEが機能しない。 よそからのペーストは可能 (一部カラー絵文字はペーストもできない) ・tcl/tk 8.6.9 (homebrewパッケージで導入) IME で入力中の文字が表示されない。文節毎の変換候補のボックスは表示される。 カラー絵文字ペーストでクラッシュしました. . . ・tcl/tk 8.6.10 (ソースからコンパイル ) IMEとの連携はそれなりにできているようです。 ただし [カラー絵文字] 直後の入力が制御不能になりやすく、まだ不安定です。 それほど [カラー絵文字] を入力したい!ってワケではないけど指標にはなるでしょう。 もうちょっと頑張って欲しいですね。 少しずつ進化してるのは嬉しいです。 フリーソフトに註文するって but in vane ... exec の結果を逐一表示しながら、最後にエラーでても落ちないようにできない? catch {exec long_runtime} mess puts $mess とすると exec の処理が全部終わってから、処理結果が表示される。 今更だけど tcl/tk はトロさ回避のため表示は遅延実行が徹底してる まめにupdate入れないと待たされた後、まとめて表示になり易い 教えて下さい tcl/tkのメソッドってざっくり言って何? procとどう違うもの? 正しいものを選べ 1.マクロ 2.コマンド 3.インターフェース 4.プロシジャ へー、そんなのあるんだ 知らんかった。 C++のメンバ関数のことだね、メソッド boostよりもtcl/tkの方が普及して欲しかった Tclの正規表現で、先読みは(?=re)ですが 後読み(?<=re)って使えないんでしょうか? 使えないとしたら、ほかに同じことできる方法ありますかね。 バージョンは8.4です。 超初心者でtcl とtkの違いもよくわかってないんですが、 とりあえずMinGWでtclとtk入れて、 http://www.kijineko.com/c-tcltk でhello-world/ このへん見ながら見様見真似でCからハロワだけ出したんですが、ここから先、どうやってC側の関数とかのコードと結びつけるのかいまいちわかりません。 pythonのtkinterでdefした関数を登録したり、C#のWinformsでのButton.Clickのデリゲートみたいな感じで、C/C++の関数ポインタなりを登録するような書き方ができるでしょうか。 tcl がスクリプト (pythonみたいなもの) tk がモジュールとかライブラリとか (qtとかwxpythonみたいなもの) pythonでCモジュール描いたことがあれば tcl/tkは楽勝 初めてtcl/tkやるなら https://qiita.com/akinori-ito/items/92ca39617773a2f48e0b で先にtcl/tkの(C無しで)方を覚えた方が楽 >>400 lookaheadはあるけどlookbehindが見当たらず... >>1 からして無理解がひどいけど 人知れず使われていくのはむしろtclの方なんだよな 本田は2015年2016年は書き込みがない つまり1年書き込みないのはトイレ休憩のようなもの Tcl/Tk なんて過去の言語かと思っていたら ADC 用のスクリプトが Tcl/Tk だったのでちょっと勉強しようかなと Tcl Source CodeTimeline 2020-11-07 14:29 Updated README 一年ぶり間近か https://sourceforge.net/projects/tcl/files/Tcl/ tcl/tk 8.6.11 未だ配布候補版(rc ver.)だが 8.6.11版が配布開始された。 正式版は年越しか? >>414 翻訳元と翻訳後が並記されてて助かる・・・ Tkinterの使い方:Canvasクラスで描画した図形を操作する | だえうホームページ https://daeudaeu.com/tkinter_canvas_method/ VTK - Wikipedia https://ja.wikipedia.org/wiki/VTK VTKはPython, Java, Tclに対するコア部分のラッパーを提供しているため、 これらのインタプリタ言語を使ってVTKのアプリケーションを書くことも可能である。 Critcl - the easy way to use C in Tcl scripts https://www.equi4.com/starkit/critcl.html Design and Development of a CPU Scheduler Simulator for Educational Purposes Using SDL | SpringerLink https://link.springer.com/chapter/10.1007/978-3-642-21652-7_5 Abstract This paper presents the design and development of a CPU scheduler simulator using SDL. This simulator enables us to study the behavior of one level and multilevel queue scheduling algorithms (including the real-time ones), and to obtain performance statistics for algorithm evaluation. In addition, a multi-platform graphical user interface, based on the Tcl/Tk language, has been developed to simplify the simulator use. The paper also presents our experiences in using SDL for the specification of CPU scheduling algorithms for educational purposes. FreeDOS | The FreeDOS Project https://www.freedos.org/ Tcl 8.6.11 for DOS 2021-01-30 3:43pm Ben Collver has compiled Tcl 8.6.11 for DOS. This is a patch release, so it primarily includes bug fixes and corrections to erratic behavior. A few things to note in this release: + fixed crashes and hangs in lsort + rewrite of zlib inflation + fix auto_path initialization + fix errno management in socket full close. And a few changes that might cause incompatibilities: + revised handling of 4-byte UTF-8 sequences + evised binary encode/decode base64 + Tcl_DStringAppendElement quoting precision + force -eofchar 032 when evaluating library scripts. We've mirrored the updated version in the FreeDOS files archive at /devel/tcl/8.6.11/ on Ibiblio. Thanks Ben! Index of /pub/micro/pc-stuff/freedos/files/devel/tcl/8.6.11 http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/tcl/8.6.11/ TkのウィジェットのpathNameに許される文字種って、 どのマニュアルを見れば書いてありますか? Tk8.4で試したら、区切りの「.」(ピリオド)以外なら 記号でも空白改行でもなんでも使えるみたいなんだけど、 ほんとに使っても大丈夫なのかな。 セミコロンでもエスケープすれば使えるけど、 流石にそれは使わないほうが無難かな。 う、ファイルシステムのpathじゃなくて、Tkのウィジェットのpathでした。 toplevel .w button .w.b -text Button-1 -commnd "puts OK" の「.w」や「.w.b」みたいな。 Tclで使える文字なら大丈夫ってことかな。 Tclのwordであればいいんでしょ wordはwhite spaceで区切られるけど、Bracesで囲えばwhite spaceもnewlineも含められますね proc {hana mogera} {a b} { puts "$a $b" } {hana mogera} 1 2 1 2 set {a b c} 3 puts ${a b c} 3 成程、使用可能な文字の記述は、tutorial にも見付けれない。 入門書には大文字で始めると特別扱いされるとか…… この辺りが『とっつきにくい』の印象を与えているのかも。 button .ボタン1 -text "押してね" pack .ボタン1 こんなのも普通に通るんだな、まあ英数字が無難だけど 大文字で特別扱いなんてするか? word単位に分割したらコマンドや変数の連想配列から探してくるだけなんだし。 >>431 大文字で始めるとクラスの名前になるかと …昔のうろ覚えですが… >>434 ほんとだ 改行もスペースもエスケープすればいけるのに ドットの次が大文字だと怒られる matplotlib は tcl で操作出来ますか? >>436 ITドカタさんありがたい いつも参考にさせてもらってます tcl87a3->tcl87a5 になって今までのツール類ではbuildできなくなった どうすりゃいいの? Tcl/Tk: 配列からリストへの変換と、リストのソート - HyperWorks Scripts &; Customizations - Altair Products - Altair Community https://community.altair.com/community?id=community_question& ;sys_id=6956c4f61b2bd0908017dc61ec4bcb45 Tkの日本語マニュアルってどっかにないですか? Tclは簡単に見つかるけど、Tkのリファレンスマニュアルは英語しか見つからないです。 Tclだけかと思ったらTkもあったのね その他いろんな情報が入っててありがたいです ただ日本語訳が... >>446 うん・・・それは私もそう思うけど 英語読めないと我が儘はいえんのよ(´・ω・`) お互い英語の学習を頑張りましょう macosでx11対応のTcl/Tkをインストールしたいのですが... もともと標準で入っているのですが、x11クライアントではないようです。 ソースコードからインストールすればいいのでしょうか? まだ試してないですがmacで普通に./configureとかしてうまくいくでしょうか。 ご存知でしたら教えてください。mac捨てろとかはなしでお願いします。 ソースコードから--with-xをつけてインストールできたけど wish起動するとX11じゃなくてmacのウィンドウが出る。 どうすればいいのやら PATHが もともとMacに入ってる /usr/bin/wish を優先してるとかじゃないの? レスありがとうございます。 新しくできたwishを起動してもX11じゃないウィンドウが出ます。 もうちょっと頑張ってみます。 mac知らんけど 普通に考えればOSX 上で独自Xクライアント起動して そのXのターミナルからwish起動しないといけないだろう >新しくできたwishを起動してもX11じゃないウィンドウが出ます。 OSXのX相当のものから起動できてるのなら X11にこだわらなくていいんじゃないの? まさにこれはtcl/tkは関係なくmac捨てろという話になるな >>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 インストール ありがとうございますぅ 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 ふぅ あと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に移植しようとしてます。 winfo id の使い道、初めて知りました 3次元プロットのグリグリまで他アプリの画面に飛ばせる(試してみました)とかX11は自由度高いんですね Tcl/Tkで四角じゃないウィンドウってできるのかな 丸いアナログ時計とかありそうだけど 素の Tcl/Tk で「丸いアナログ時計」作ってみた (mac版) 少し変えれば winでも出来ると思う https://i.imgur.com/Z17ciJK.png https://wiki.tcl-lang.org/page/Shape に方法が紹介されている. 変形ウィンドウ用の拡張パッケージも紹介されてる (試していない) おお素晴らしい 見た目が透過するだけでもありがたいけど、透明なところクリックすると後ろのウィンドウがアクティブになったりする? それができたら理想的なんだけど。 と思いつつメインで使ってるシステムで試そうとしたら、Linux版はwm attributeに-transparentがないようで... 残念です。 拡張のShapeはいきなり./configureでつまづいて、かなりハードル高そう >>460 LinuxならTkZinc が動くと思います リンク先の紹介では TkZinc used to support it. Now the project seems to have vanished. なんて書かれてますが https://github.com/asb-capfan/TkZinc にあります 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 https://i.imgur.com/kdiAO6F.png 複合パス(.zc contour 〜)を使って xeyes を再現したかったのですがクリッピングすると形が乱れてしまい使い物になりませんでした. 長方形を長方形でくり抜いたような単純なパスならいけます. この辺りは mac特有の問題かもしれません 最後の after 100 main の小細工はそうしないとなぜかエラー吐いて落ちるからです. これも mac 特有の... 他にも回転やスケール機能なんかがあります ドキュメントが貧弱ですが demoフォルダのサンプルが参考になりました 複合パスによるクリッピングがうまくいかない件 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 https://i.imgur.com/8c5PxP5.png やりたかった xeyesモドキが出来ました スゴイ、頑張ればいろいろできるんですね。 ただこちらの環境ではTkZincもインストールのハードルがやっぱり高そうです。 configureでTcl/Tkのインストール情報を参照するところからつまづいてます。 自分は職場のLinuxマシンのいちユーザーで 基本的にインストール的なことはユーザー権限でしかできないため プリインストールのTcl/Tkに拡張機能を追加するのはなかなか難しいです。 今回いろいろ紹介していただいてかなり勉強になりました。 ググってもなかなかたどり着けない情報で、ありがたいです。 GitHub - avl42/tcl-bitcoin: Bitcoin-related stuff using the scripting language Tcl(/Tk) https://github.com/avl42/tcl-bitcoin すみません、最近Tcl/Tk触り始めたんだけど、c言語で、 Tcl_FindExecutable(argv[0]) を書かないとGUIの日本語が文字化けするっていうのは常識なの? 一時間くらいハマったよ >>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"); // 環境変数を見に行かなくても決め打ちで良いでしょう >>467 なるほど、おまじないの中はそういう実装だったのか。ありがとうございます。 ちょっとした疑問。 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で同じ動作だったから、こういうもんだと思うしかないのかな。 >>469 ボタンはクリックにあわせてイメージ更新するけど、先にdestroyが動いて、イメージ更新するときには .b2が無くなってるんじゃないかな? どうしてもbindからdestroyしたいなら、after idleで後回しにすれば動くと思う。(試してない) bind .b <buttonrelease> { after idle { destroy .b }} buttonpressでも動くかどうかは知らない。 >>470 ありがとうございます。after idleうまくいきました。 .b2がinvokeされたあとでdestroy .b2が実行されました。 いまでもTcl/Tkって現役なんだね Macでもつかえるなら勉?しようかな 変数置換がなければこれらは同等と考えていいんだろうか? set lst {a b c} set lst "a b c" set lst [list a b c] 空リストをセットするにはこれらも同等なのだろうか? set lst {} set lst [list] パフォーマンス的には下は無駄な気もするけど。 >>475 内部形式のTclオブジェクトは文字列、数値、リストなどの共用体。 必要に応じて実体が変換される。 前二つは文字列が実体、listコマンドを使ったものはリストが実体。 文字列が実体のオブジェクトをlindexのようなリストとして取り扱おうとすると その時にリストオブジェクトに変換される。 リストが実体のオブジェクトを string のように文字列として取り扱おうとするとその機に文字列オブジェクトに変換される セット時に変換されるか使う時に変換されるかだけの話でオーバーヘッドはさして気にするだけ無駄 詳しい解説ありがとう リストと文字列で内部の扱いは違うけど、使う上では実質どちらも同じようなもんってことね モヤモヤが晴れました eoLog Project https://geolog.mydns.jp/ GeoLog Project は、 閉鎖された日本ジオシティーズのウェブサイトを、 消滅前にできるだけアーカイブ(保存)しようと取り組んだ個人プロジェクトです。 Internet Archive: GeoCities Special Collection 2009< https://archive.org/web/geocities.php Saving a Historical Record of GeoCities GitHub - Starlink/tcl: Starlink patched version of TCL https://github.com/Starlink/tcl linuxディストリだとtclはデフォで入ってtkはなかったりするな tkはおまけじゃい! tclshにchshしてみた rlwrapかませばそれなりに悪くないし、コマンドセットは違えどwinでもunix系でも動くいいシェルだよ >>486 Tkcon https://wiki.tcl-lang.org/page/Tkcon Summary tkcon is a replacement for the standard console that comes with Tk (on Windows/Mac, but also works on Unix). The console itself provides many more features than the standard console. tkcon works on all platforms where Tcl/Tk is available. It is meant primarily to aid one when working with the little details inside tcl and tk, giving Unix users the GUI console provided by default in the Mac and Windows Tk. It's also not a bad replacement for the default MS-DOS shell (although it needs lots of fine tuning). かといって対話用途フル装備ってものまた違うかなって、まあスクリプト一つだけど>>488 欲しい機能だけ参考にさせてもらいます プログラム開発しながらちょこっと試すのにtclsh使ってて 最近rlwrapを使うようになって格段に便利になりましたが chshまでしてしまうとは猛者ですね 親シェルがジョブコントロールしてると子シェルのジョブコントロールが有効にならんようで(サスペンドとか) chshしたり呼ばれた名前を解析して、勝手に自身のシグナルハンドラをジョブコントロール向けに設定するスマートなシェル(bash, pwsh等)はあるが、 →ですらゴミ入るロートルなtclshにそんな機能は…あるのか検証してみる 親から呼ばれるとその親がデフォルトのシグナルハンドラ備え付けてtclsh呼ぶので、tclshの子へサスペンドシグナル送るとtclsh自体がサスペンドされるという仕組み なのでわざわざchshしなくとも、とりあえずシグナルハンドラを全て空にすれば(trap '' SIGXXX...; exec tclsh的な)、とりあえずtclsh自身は不死 これをスタートラインとして適切にトラップ設定してゆけば、tclsh中心にマルチタスク生活できるかと Jeszra Web Site - SourceForge http://jeszra.sourceforge.net/jeszra/ Jeszra is an advanced vector graphics application written in Tcl/Tk. It generates source code for Tcl/Tk, Ruby, Python and Lisp. ttkdraw: Tom's Tcl/Tk-based Drawing Program https://hea-www.harvard.edu/ ~fine/Tech/ttkdraw.html https://hea-www.harvard.edu/ ~fine/Tech/ttkdraw1.1-beta.tar.gz https://hea-www.harvard.edu/ ~fine/Tech/ttkdraw1.0-beta.tar.gz Orthographic grid option Font control. Consistent (functional) setting of object options Separate object manipulation mode added (also still available with Control Key). Added a MIT-style license (see README) C(C++じゃなくて)から使える標準クラスライブラリtcl/tk TkInfo: a free browser for info files http://math-www.uni-paderborn.de/ ~axel/tkinfo/ http://math-www.uni-paderborn.de/ ~axel/tkinfo/tkinfo-2.11.tar.gz oust! My best game; written in TCL/TK (homebrew arcade) https://www.youtube.com/watch?v=y5vM4Ec8cvI Atari-like Centipede arcade game written in TCL/TK. (homebrew arcade) https://www.youtube.com/watch?v=v7PH9zPWNoQ GitHub - lawrencewoodman/sdl_and_tk_demo: A Demonstration of How to Embed an SDL Surface in a Tk Window https://github.com/LawrenceWoodman/sdl_and_tk_demo GitHub - Drolla/t2ws: T2WS - Tiny Tcl Web Server https://github.com/Drolla/t2ws Pythonから呼び出して使い始めた初心者です ラベル表示する場合なんですが・・・ root=Tk() root.geometry( '100x100' ) ↑ここまではOK l = Label(text='123') l.pack() ↑pack()でラベルが表示されますが、引数にrootを指定せずともrootウィンドウに表示されます ウィンドウを複数表示して場合、どのウィンドウにラベルが表示されるのか・・・困りませんか? >> 511 Tcl/Tk的にはrootウィンドウを複数作る場合 toplevel というのを使う。 Python/tkinterでTk() のインスタンスを複数作るのはお勧めしない。 どうしてもTk()を複数作りたい場合は、 second = Tk() l2 = second.Label() で良いような気がするけどね。 windowsでtclはずっとActiveTcl使ってたけど msys2普通に入れてるしもう特にActiveTclにこだわる必要もないようだな さらばだActiveState いまどきwindowsでsjisのスクリプト書いてていいのか不安になる Ffidl Win64 binary 欲しい 捜しても見つからん Win32用ばかりだ magicsplatにあったような気がする 俺はtcomの64が欲しい read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる