●●●●TCL/TKなら俺に聞け 4●●●●
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
675X3 http://wiki.tcl.tk/によれば
Tclはdenotationally-typed functional languageと呼ばれているみたい。 Tcl/Tkって
まあ業務で使うとかは置いておいて,プログラム初心者が学ぶ言語として最適だと思うのよね。
まず大半の言語と同じくサブルーチンや変数の概念を持ってる
LISPみたいに妙な書きかたをしない
そしてなによりTkを経由してGUIが出せるってのはすごいことだと思うよ。
コマンドラインから
$ ./a.out
とやって数字がインクリメントされるのを眺めても嬉しくないけど
ボタンを押したら枠内の数字が増加していくってのは,プログラミングの実感を持つのに最適。
あとWindowsでもMacでも相当古い機種からサポートされてる。 Nimって結局Cなんでしょ?
なんかラッパー言語って二つの処理系のことを平行して考えないといけないから面倒な印象があるわ いや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 だ