[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/14 01:40 / Filesize : 274 KB / Number-of Response : 946
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

●●●●TCL/TKなら俺に聞け 2●●●●



1 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:52:44 ]
【英語サイト】
プロジェクト本拠地
tcl.sourceforge.net/
最新版ソースコード
ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/
The Tcler's Wiki
wiki.tcl.tk/
The comp.lang.tcl Newsgroup
groups.google.com/group/comp.lang.tcl/
ActiveTcl
www.activestate.com/products/activetcl/

【日本語サイト】
もっとTcl/Tk
www.interq.or.jp/japan/s-imai/tcltk/
Tcl/Tk Scripting Laboratory
www.geocities.jp/urano343/tcltk.html
Tcl/Tk Primer
mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/
Tcl 8.4.1 Manual Command Reference
www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm
CategoryTclTk - mynote
reddog.s35.xrea.com/wiki/CategoryTclTk.html

【前スレ】
●●●●TCL/TKなら俺に聞け●●●●
pc11.2ch.net/test/read.cgi/tech/1033628416/

513 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:59:54 ]
初心者です。便乗質問(?)なのですが、自分で作ったライブラリは皆さん
パッケージ(モジュール?)にしてるのでしょうか?
自分はその方法が良く分からないので、とりあえずsourceコマンドで読むという
方法で凌いでます。

ところで、amazon.comによると、Tcl言語の設計者が書いた本の改訂版が出る
ようですね。Tcl/tk 8.5に対応した内容に書き改めたとのこと。
Tclが日本でも再度注目されたりしないでしょうか。

514 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:17:45 ]
>>513
パッケージも結局内部ではloadやらsourceやらで読み込んでたと思います。

利点は、パスを書かずにパッケージ名だけで呼び出せるから、
位置関係を気にしなくてよくなることぐらいでしょうか。

書き方は >>1 の日本語サイトの1つめと2つめにそれぞれ解説があります。

515 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:44:21 ]
>>514
ありがとうございます。参考になりました。
ただ、開発途上のモジュールについても、皆さんパッケージ化されているのでしょうか?
それなりの手順を踏まないとパッケージ化はできないようなので、モジュールの開発途上では、
やはり単にsource とかで読み込むのが普通なのでしょうかね?

516 名前:本田 [2009/09/13(日) 00:13:43 ]
>Tcl言語の設計者が書いた本の改訂版が出るようですね。

90円台/ドルの円高なので今が廉く買うチャンスかも。

517 名前:本田 [2009/09/13(日) 00:42:31 ]
package - パッケージのロードとバージョン制御機能。
www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/TclCmd/package_jp.htm

518 名前:本田 [2009/09/13(日) 02:48:50 ]
>>515
ウェルチさんの本によると、
packageは複数のアプリケーションから利用する時に使うそうです。

519 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 11:47:25 ]
>>508
変数名が名前だとすると、名前空間は苗字・・・。

>>509
10年前の8.0から導入されました・・・。

>>510
全然独特じゃないと思うけど・・・。名前空間がある言語ない言語あるけど、
変数名とかにprefixを付けてバッティングしないようにするという意味での
名前空間は汎用的なプログラミング概念だと思う。

>>511-512
8.5からはnamespace ensembleが入ったので名前空間にコマンド群を
まとめあげてサブコマンドを作ることも出来るようになった。。。
たしかにサブコマンドは名前空間の一種のような気もする・・・。

>>513
とりあえずsourceでいい。他人に配るときはpackageにするけど。
pacakgeなんて名前空間とそのバージョンを書いて、pkg_mkIndexするだけ。
大して難しいしくみでもない。

520 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:36:11 ]
>>518 >>519
packageの件、ありがとうございました。開発が一段落するまではsourceでやってみます。


521 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:40:11 ]
うむ。そうするがよい



522 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 13:33:42 ]
>>519
(Tclのnamespaceが)
>全然独特じゃないと思うけど・・・。
普通、よくあるnamespaceの使い方は宣言的なものが多いんだけど、
Tclのnamespaceはただのコマンドなので、実行文的な書き方になる。

namespace eval { }
の中でnamespace export ...
とか呼び出すのとか、かなり変に感じる。

523 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 14:23:14 ]
変に感じるのはそれだけじゃないだろう?(笑)
深く考えないのが吉。

524 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:25:51 ]
>>521
審議中

525 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:38:09 ]
>>522
それを言い出すとTclは制御文もコマンドだし・・・

526 名前:デフォルトの名無しさん [2009/09/22(火) 16:44:34 ]
すいません。Perl質問スレでも書きましたが、
こちらのほうが適切そうだったので、こちらで質問させてもらいます。

Perl TkのTextウィジェットを使って
文字列の入出力をする方法はどのようにするのでしょうか?
Entryウィジェットを使ったサンプルはWeb上から見つけたのですが、
Textウィジェットを用いたものはないもので。。。

527 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 18:09:24 ]
>>526
Perl/Tkは触ったこと無いけど、
確かオライリーからまさにその本が出版されていたと思った。
それを購入するのが最終的には早いと思う。
日本でPerl/Tkは、ひどくマイナーだから。

あるいは、Ruby/Tkなら日本語の書籍が何冊か出版されているし、
Web/MLなどで情報の収集が容易だから、そちらに乗り換えるとか。
もちろんTcl/Tkでもオケー

ゴメン、これくらいしかレスできねえヨ

# いいレス返してあげておくれ > 他の住人さん達

528 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 07:29:32 ]
Perl/Tkでググれ、としか

529 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 08:48:16 ]
だな。一発でこんなん出たけど
www.geocities.jp/m_hiroi/perl_tk/perltk07.html

530 名前:本田 [2009/09/23(水) 18:19:46 ]
Mastering Perl/Tk
oreilly.com/catalog/9781565927162
examples.oreilly.com/9781565927162/
examples.oreilly.com/9781565927162/mastperltk_examples.tar.gz

mastperltk_examples.tar.gz
の中にサンプルプログラム有り。

531 名前:本田 [2009/09/23(水) 18:23:42 ]
Past, present and future of Tcl virtual filesystems Steve Huntley
www.tcl.tk/community/tcl2007/papers/Stephen_Huntley/tcl2006_slides_huntley.pdf





532 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 19:10:25 ]
>>530
一瞬、「サンプルプログラム祭り」に見えたw

Tcl/TKはいつまで経ってもマイナー言語のままだから、
簡単にこんなことができますよーって紹介はもっとあってもいいと思うけどね。

533 名前:本田 mailto:sage [2009/09/23(水) 19:12:57 ]
P2P A Metafile System over P2P File-sharing Network
spa.jssst.or.jp/WIT/2005/papers/05013.pdf


534 名前:本田 mailto:sage [2009/09/23(水) 21:51:59 ]
>>531
The FILTR:
(File Inventory for Loading, Transfer and Recovery)
filtr.sourceforge.net/
The FILTR is a program intended to be useful over the course of my lifetime.
It combines the features of a backup utility,
an archiving/version-control utility
and a document management utility to create an effective
and simple-to-use personal document management system.
Author: Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license

535 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 11:04:56 ]
流れを読まずに質問ッス
Text Widget で
・「文字単位」でTAB幅?TABインデント幅?を設定するにはどしたらええのん?
・一般的なエディタ(秀丸とかemacsとか)みたいなタブ文字でのインデントを実現できないのん?

TAB幅4文字で書かれたCのソースを、Text widgetで表示して色々する作業用スクリプトを書いてる最中なんですが、
  hogehoge(); // ほげほげ
的なコメントが、エディタ上ではインデントぴったりで綺麗に並んで書いてあるのに、Text Widgetではガタガタにずれて表示され
視認性がチョー悪く、作業効率も落ちるので、なんとかしたいのです

TkのText Widgetは、デフォルトでTAB幅8文字、tabsオプションで指定はできる、
というところまでは判って、要はTAB幅4文字に変更できれば解決かなと思ったのですが…

homepage3.nifty.com/kaku-chan/tcl_tk/chapter_230.html
によると、「ピクセル」「mm」「inch」「cm」の4種類でしかtab stopsは設定できないと書いてあるし、
無理矢理ピクセルで指定してみても、TAB文字がそのまま「4文字相当の幅を常時取って」行の中に入ってしまうしで…

536 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 21:03:35 ]
package require Tk
text .txt -font {"MS Gothic" 12}
button .b1 -text 4tab -command {settab 4}
button .b2 -text 8tab -command {settab 8}

pack .txt -side bottom
pack .b1 .b2 -side left


proc settab {n} {
set font [.txt cget -font]
.txt configure \
-tabstyle wordprocessor \
-tabs "[expr {$n * [font measure $font 0]}] left"
}

.txt insert 0.0 {
12345678901234567890123456789012345678901234567890
#include <stdio.h>

int main(int argc, const char** argv) {
printf();
return 0;
}

}


537 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 21:09:22 ]
コピペ失敗した・・・前はタブは自動でスペースに置き換えてくれてた
木が刷るのにどういうことだ・・・・

package require Tk
text .txt -font {"MS Gothic" 12} -tabstyle wordprocessor
button .b1 -text 4tab -command {settab 4}
button .b2 -text 8tab -command {settab 8}

pack .txt -side bottom
pack .b1 .b2 -side left

proc settab {n} {
set font [.txt cget -font]
.txt configure -tabs "[expr {$n * [font measure $font 0]}] left"
}

.txt insert 0.0 {
12345678901234567890123456789012345678901234567890
#include <stdio.h>

int main(int argc, const char** argv) {
printf();
return 0;
}

}



538 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 10:00:31 ]
>>536-537
ありがとうございます!
動かしてみたらたしかにTAB幅4文字っぽくなりました
Tcl/Tkは全く詳しくないので自信がないですが、おそらく
・ -tabstyle wordprocessor 指定
・ font measure でフォント1文字の横幅ドット数を取得
→TAB幅の文字数を掛けたピクセル数にして指定
が肝なのですかね…

実はTcl/TkじゃなくてPerl/Tkでスクリプトを書いてるんですが
Tcl/Tkのtext widgetで実現できているなら
Perl/Tkでも実現できるだろう…という前提で作業してみます

539 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 10:19:09 ]
うーん…
Perl/Tkには-tabstyleが実装されてないみたいですね…
指定すると「そんな指定は知らねえよ」とエラーが出る…

cpansearch.perl.org/src/SREZIC/Tk-804.028_501/t/text.t
↑「XXX not yet implemented?」とか書いてあるし…

www.tkdocs.com/tutorial/text.html
↑ここには、指定できる文字列としてtabstyleが書いてあるんだけどなあ…

勉強も兼ねてTcl/Tkで書き直してみるかな…
それとも Python + Tkinter も試してみるか…

540 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 19:17:49 ]
Tk使うならTclが一番安心だよね。やっぱり

541 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 21:12:37 ]
Tcl/TkじゃなくてPerl/Tkの話だから
スレ違いな気もしますが一応報告だけ

* text widgetにtabstyleが実装されたのは8.0.5から、らしい
* Perl/Tk(ActivePerl+Tk)は8.0.4相当。よって実装されてない
* Perl/TkでもTkxを使えばtabstyleが使える(TkxはTcl/Tkのコア部分をそのまま使ってるそうで…)
* Tkxを使うとパッと見でTcl/Tkそっくりの記述もできる(Tkx::text(".txt", )
* ActivePerlでTkxを使うとPARでexe化したときにActiveTclを要求されるので、exe化の意味なし
* Perl+Tkxでfont measureをどう記述するかが謎 ←今ココ

Tcl/Tkにも正規表現とハッシュ(連想配列)があるらしいから、書き直すのもアリかな…
GUIの見た目も、Tcl/Tkのほうが綺麗だし



542 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 21:52:01 ]
tkのデバッグってどうしてます?
10時間くらいで落ちたり、処理速度が低下します。



543 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 22:29:37 ]
>>542
???
tk4.2の頃は、そういうことあったけど……
8.3以上では直ってるはずだと聞いてるお?

ちなみに、
落ちると言っても、「tkが動かなくなる」だけ。
原因と対処法は自分で見つけた。もちろん、報告した。
処理速度の低下は、Xサーバーに問題があったので、ちょっと弄った。


544 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 23:38:25 ]
変数に入っている値が整数(として扱える)かどうか調べる方法はありますか。

545 名前:デフォルトの名無しさん [2009/10/02(金) 23:44:20 ]
string is integer $x

546 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 23:31:56 ]
>>545
やりたいことができた!他にも色々調べられるのね。ありがとうです(>_<)

547 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 18:16:08 ]
>>545-546
まあその場合そのとおりなんだが、
Tcl/Tkの各コマンドのヘルプページはちょっと読みづらいよね。
PHPのヘルプ並みに使いやすく整備してくれるといいんだが……。

548 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 19:52:40 ]
>>547
tclshでstring is って打つとコマンドの文法が出る。
string is a b って適当に打つと、クラスの一覧が
ズラズラ表示される。これで十分。

549 名前:デフォルトの名無しさん [2009/10/27(火) 11:40:30 ]
TCLスクリプトを自前アプリに実装したいのですが、
なにかお勧めの書籍(web)を紹介頂けませんか?



550 名前:デフォルトの名無しさん [2009/10/30(金) 17:03:22 ]
c++builder6で下記コードを実行するとstdoutが見つからないというエラーが表示されます。
>>301のログでTcl_SetStdChannel()で標準出力をトラップする見たいな事が記載されていますが、
どうやって行うのでしょうか?

strcpy( buf, "puts \"TEST!!\"");
Tcl_Eval( interp, buf );

エラーメッセージ:can not find channel named "stdout"


551 名前:本田 [2009/10/30(金) 22:58:47 ]
>>549
C言語からTclを呼び出すには
www.geocities.co.jp/SiliconValley/4137/dir4/namo.html



552 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:03:10 ]
CでTclを使えるようにする

Tcl_FindExecutable
Tcl_Interp
Tcl_Init

Tkも使えるようにする(MainWindow破棄でTk_MainLoopから戻る)
Tcl_FindExecutable
Tcl_Interp
Tcl_Init
Tk_Init
Tk_MainWindow
...
Tk_MainLoop

tclshみたいなプログラムにする(スクリプト終了でプログラム終了)
Tcl_Main
Tcl_AppInit中でコマンドの設定など

wishみたいなプログラムにする(スクリプト終了でプログラム終了)
Tk_Main
Tcl_AppIniti中でコマンドの設定など

拡張DLL(shared library)
dll名_Initという関数の中でコマンドの定義など

553 名前:デフォルトの名無しさん [2009/11/02(月) 17:30:39 ]
>>551,552

有り難うございます。
なんとか実行できる様になってきました。

基本的な事をお聞きしたいのですが、
複数行に渡るコマンド(forやwhileなど)を実行するにはTcl_Eval()では駄目なのでしょうか?

以下の様なコマンドをTcl_Eval()で1行づつ実行すると(1)は実行されますが、
(3)は実行されません。
Tcl_EvalFile()でまとめて実行すると、(3)も10回実行しますが、
Tcl_EvalFile()は全部終わるまで戻ってこないので、
Tcl_Eval()で1行づつ実行したいのです。

(1)puts "TEST!!"
(2)for { set i 0 } { $i<10 } { incr i } {
(3) puts "I is $i"
(4)}

554 名前:デフォルトの名無しさん [2009/11/02(月) 18:02:38 ]
553の続きです。
エラー処理を追加したらTcl_Eval()でエラーが発生して実行されていませんでした。

(2)→missing close-brace
(3)→can't read "i": no such variable
(4)→invalid command name "}"

試しに3行を1行にまとめたら実行できました。読みにくい・・・
for { set i 0 } { $i<10 } { incr i } { puts "I is $i" }

やはり複数行のコマンドは実行できないのかな・・・

555 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 23:15:44 ]
{
}
の中の改行は文の終わりと認識されず、改行文字を含む文字列と認識されます。
forは引数を4つとるコマンドです。
for {set i 0} {$i < $N} {incr i} {
puts $i
}
は、たまたま第4引数が改行を含む文字列であるというだけのことです。


556 名前:デフォルトの名無しさん [2009/11/04(水) 10:50:05 ]
>>555

有り難うございます。

>>改行文字を含む文字列と認識されます。

for文などは普通は見易くする為に>>553の様に改行を入れて記述すると思います。
この様な記述をした場合には、第4引数が複数行になる為、
Tcl_Eval()を利用して1行づつ実行する事はできないという理解で良いですか?




557 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:53:58 ]
>>556
というかC関数をTcl側に公開して、それをfor文で普通に呼び出せばいいんじゃね?
そしたら何度も呼び出すこと考える必要ないでしょ。

558 名前:デフォルトの名無しさん [2009/11/04(水) 13:26:48 ]
>>557

ありがとうございます。

>>C関数をTcl側に公開して

これの方法が現時点では分かりませんが、これが出来ればいけそうな気がしてきました。
早速調べて試してみます。

559 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:18:53 ]
>>556
見やすくするためではありません。
for文が第四の引数を解釈するに当たり、改行までをひとつのコマンドと引数列とみなして実行するためです。
よって{}中の改行は飾りではないです。


560 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:24:23 ]
>>558
Tcl_CreateObjCommand
引数の解釈はTcl_GetIntFromObjなどを使う。
返値はTcl_SetObjResultで。

Tcl_CreateCommandなどのTclオブジェクトを扱わない形式では
数値やリストなど全部文字列に変換されて渡されるので、速度・精度の面で使わないこと。
(Tclオブジェクトだとリスト型やdouble型を保持したままやりとりする)

561 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:30:04 ]
んで、ぶっちゃけ言うと
Tcl_Eval(interp, "for {set i 0} {$i < 5} {incr i} {puts $i\nputs hogehoge}");



562 名前:デフォルトの名無しさん [2009/11/04(水) 23:17:21 ]
>>559-561

色々有り難うございます。
とりあえず、Tcl_CreateCommand()を使用してTCLスクリプトからCの関数を実行し、
パラメータを渡す事まで確認できました。
TCLで実現したい事は、「とりあえず」は出来たと思います。
残りは戻値や速度面を考慮してTcl_CreateObjCommand()などを調べて見たいと思います。


563 名前:本田 [2009/11/21(土) 06:24:51 ]
www.tcl.tk/
>Tcl/Tk 8.5.8 Nov 16, 2009

564 名前:デフォルトの名無しさん [2009/12/11(金) 19:14:03 ]
Jaclてなんて発音すれば良いの?

565 名前:デフォルトの名無しさん [2009/12/11(金) 21:05:06 ]
ジャッカル

566 名前:デフォルトの名無しさん [2009/12/16(水) 23:21:52 ]
tclでhtmlを取り扱うウイジェット実装はいくつかあるみたいですが
お勧めとか、デファクトスタンダードなものとか
あるのでしょうか?

567 名前:本田 [2009/12/18(金) 00:55:20 ]
>>566
>デファクトスタンダード

incrtclだと思う。
incrtcl.sourceforge.net/iwidgets/iwidgets/scrolledhtml.html

568 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 02:07:53 ]
板違いかもしれないけれど
Ruby/Tkで、
htmldoc = '<html>〜</html>'
html = Tk::HTML_Widget.new.pack
html.parse(htmldoc)
とするとSegmentation faultが出るのは自分だけかな……。
TkHTML3、Tcl/Tk8.4、Ruby1.9.1環境です。

569 名前:デフォルトの名無しさん [2009/12/28(月) 17:45:58 ]
折角国際化されてるんだし
だれかTcl/Tkでmigemo使えるようにしろよ〜

570 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 20:24:16 ]
IMの制御がきちんとできるようにしてくれぇ。

571 名前:デフォルトの名無しさん [2009/12/29(火) 09:37:18 ]
結構この頃気に入っているのですが
ckて使っている人いますか?
なんか語りませんか



572 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 10:50:57 ]
>> 571
大昔、CTk wiki.tcl.tk/5016 は使ったことがある。
ckも2001年頃から開発が止まっているみたいけど、8.5.8環境でもちゃんと動く?


573 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:43:14 ]
Ckというのはwww.ch-werner.de/ck/ なのですが
ページによると8.0-8.4が恐らくターゲットかと。うちでは8.0で動いています。
キャンバスなど対応しないウイジェットもあるので制限は多いですが、
Guiのプログラムとコンソールのプログラムが一つのプログラムでかけるのが
凄いです。(tcletも使えば一石三鳥?)
CTKはどんな感じでしたか?
Ckの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。
putsなど標準入出力ではOkですが。


574 名前:本田 [2010/01/05(火) 22:51:35 ]
>Ckの場合難点はCkの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。

cursesってUNICODEに対応してないのかな?

575 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 23:26:35 ]
ncursesw とかじゃん?

576 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 23:35:47 ]
>>573
CTk使っていたのは日本語パッチ版が使いたくて8.0で粘っていたころなので、さすがに覚えていない。
当時はMulti-Byte文字を使えるcursesもほとんど無くて、日本語は最初から諦めていたと思う。

Multi-Byte文字はCkとcursesの2段階で対処が必要だと思うし、8.0だとそもそも多国語対応していない
ような気がするので、tcl内部とcursesと実際の表示(xtermとか)のencodingを合わせないとだめだよね。

がんばってね。


577 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:28:42 ]
アプリケーション拡張言語としてのTCLってどうして普及しなかったんですか?

578 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:34:43 ]
>>577
いや〜、あんなもん、tkが付いてなかったら使いたくねえ!


579 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:39:50 ]
>>577
tk以上の発明品が生まれなかったからじゃないかな。
結局Tcl/Tkが作られた当時はアプリのスクリプト言語をサポートするという発想が新しすぎたんだと思うよ。
後スクリプト言語としては文字列と整数のデータ型の区別がされてなくて微妙に使いにくいとか。

元々HTMLの埋込み言語として開発されたPHPが、発展してフレームワークが作られるようになると
HTMLの生成がテンプレートエンジン越しになって本来の埋込スクリプトが全く使われなくなったりね。

開発当初の目的と実用される用途が一致しないのはよくあること。

580 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 22:27:44 ]
ストールマンがTclの普及自体に横槍出したのもでかいんじゃないかな

581 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:46:35 ]
>>577
GNUに嫌われたから



582 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:33:16 ]
>>580
guileも全然普及してないな。

583 名前:デフォルトの名無しさん [2010/01/19(火) 21:15:09 ]
GIMP は SIOD から TinyScheme に変わったんだよね。
Guile 哀れw

584 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:16:13 ]
S-Langというのもあったけど。

585 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:03:23 ]
TclはPythonに喰われちゃったんだと思う

586 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 10:09:59 ]
今ならさらにLuaもあるしな。

587 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:52:36 ]
>>585
蛙と蛇だしな・・・

588 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:29:44 ]
デスクトップマスコットを作ろうかと思っているのですが、
ウィンドウを透過させて、画像だけを表示させるようなことは
tcl/tkでできるのでしょうか?

例えばこんな感じのを実現したいです
ttp://cgi32.plala.or.jp/higpen/javatips/36.shtml

OSXを使用しているので、
システム透過色を背景色に設定させるようにしてみましたが、
思い通りの結果になりません。(タイトルバーが表示されていたりします)

package require Img
pack [canvas .can -width 300 -height 300]
image create photo foo -file circle.tif
.can create image 0 0 -image foo -anchor nw

wm attributes . -transparent 1
. configure -background systemTransparent
.can configure -background systemTransparent


589 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:13:58 ]
osxはよくわからんけど、wm overrideredirect . 1してみたらどうなる?

590 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:16:09 ]
やってみましたが、
ウィンドウのサイズ、移動が出来なくなりますが、
タイトルバーは消えませんでした。

591 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:37:46 ]
>>588
バージョンくらいかけよアホ。これでも読んでろ
wiki.tcl.tk/13734



592 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 21:16:58 ]
ActiveTcl 8.5.8.1を入れたら、Tkのtextで日本語入力するとwishが落ちるようになった。
text .t; pack .t -expand yes -fill both だけのプログラムでも再現する。
IMEで1バイト文字を選択して確定しても落ちるのでIME制御で何か壊しているみたい。
こんな時に限って旧のバックアップが無いので確認できないけど8.5.8は大丈夫と思う。
だれか8.5.8残している人。ください。

593 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:38:51 ]
ほしゆ

594 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 02:28:47 ]
C++/Tcl 凄いな。

595 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 23:05:28 ]
>>594
ksk

596 名前:本田 [2010/03/17(水) 23:34:20 ]
>>592
ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe

597 名前:592 mailto:sage [2010/03/18(木) 21:26:34 ]
>>596
ActiveState ポリシー変えたらしくて、Community Edition(Free)は最新バージョンしか
入手できなくなってます。
しばらくはtclkitでしのぎます。


598 名前:本田 [2010/03/18(木) 22:48:35 ]
>>597
ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe でgoogleれ。

599 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 22:54:45 ]
本田氏の本気を見た(いりこだし的な意味で)

600 名前:592 mailto:sage [2010/03/18(木) 23:39:47 ]
>>598
それらしいURLを3つくらい見てダメだったので諦めていましたが、15番目で見つかりました。
どうもありがとう。


601 名前:デフォルトの名無しさん [2010/04/27(火) 22:17:26 ]
perl tkでtxtウィジェット中に1秒間隔で
文字列を表示させることを考えていますがうまくいきません。

ソースは下になります。
何かおかしな点ありますでしょうか?

-----
$window1 = MainWindow->new();
$frame1 = $window1->Frame()->pack();
$output = $frame1->Scrolled('Text')->pack(-expand=>1, -fill=>'both');

for($cnt=0; $cnt<1000; $cnt++){
$output_tmp = "$cnt" . "\n";
$output->insert("end", $output_tmp);
$output_tmp = "";
sleep(1);
}

MainLoop();
-----



602 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 23:35:32 ]
perl tkは知らんけどtcl/tkで定期的に処理を実行する時はafterコマンドを使う
リファレンスマニュアルとか調べてみ

603 名前:デフォルトの名無しさん [2010/04/28(水) 06:29:41 ]
どううまくいかないのかを書きなさい。

604 名前:デフォルトの名無しさん [2010/04/29(木) 06:13:30 ]
>>602
ありがとうございます。ちょっと調べてみます。

>>603
上記ソースの場合、立ち上がりすらしない。
sleepをコメントアウトしたら1行づつ出力されずに、
溜め込んだ情報を一気に吐き出すといった感じです。

605 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:45:57 ]
>>601
描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら
描画出来ないと思う。
ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。
どうしても今のループにしたければ、updateすると動くかもしれない。


606 名前:デフォルトの名無しさん [2010/04/29(木) 21:57:57 ]
>>605
updateでできました!
ありがとうございました_( . _ . )_

607 名前:デフォルトの名無しさん [2010/04/29(木) 23:30:28 ]
テクルトックで読み方あってる_

608 名前:デフォルトの名無しさん [2010/04/29(木) 23:36:58 ]
何度もすいません。

>>601の修正版で、
常に最新出力行が確認できるようににしたい
(現状、テキストボックスが画面出力に追従しない。。。)
のですが、何かうまい方法ってあるんでしょうか?

調べてみたんですけど、うまいこといかなくて。。。

-----
use Tk;

$window1 = MainWindow->new();
$frame1 = $window1->Frame()->pack();
$output = $frame1->Scrolled('Text', -scrollbars=>'se')->pack(-expand=>1, -fill=>'both');

for($cnt=0; $cnt<1000; $cnt++){
    $output_tmp = "$cnt" . "\n";
    $output->insert("end", $output_tmp);
    $output_tmp = "";
    $window1->update();
}

MainLoop();
-----

609 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:40:15 ]
>608
君はイベント駆動モデルという物を全く理解していない。
>描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら
とも、
>ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。
とも言われてるだろ?
画面描画とかは MainLoop() の中で発生してるんだってば。
その前のループの所の処理は既に終わっちゃってるの。

$window1 = MainWindow->new();
$frame1 = $window1->Frame()->pack();
$output = $frame1->Scrolled('Text', -scrollbars=>'se')->pack(-expand=>1, -fill=>'both');

$cnt = 0;

$output->repeat(1000, sub { # ここの処理が 1 秒単位で毎回呼び出される
  $output->insert("end", "$cnt\n");
  ++$cnt;
});

MainLoop();

610 名前:本田 [2010/05/02(日) 23:45:07 ]
>>608
Tk Documentation Table of Contents
www-users.cs.umn.edu/~amundson/perl/perltk/toc.html
fileevent Execute a callback when a file becomes readable or writable
www-users.cs.umn.edu/~amundson/perl/perltk/fileevent.htm
after Execute a command after a time delay
www-users.cs.umn.edu/~amundson/perl/perltk/after.htm
tkwait Wait for variable to change or window to be destroyed
www-users.cs.umn.edu/~amundson/perl/perltk/tkwait.htm
IO high level interface to Tk's 'fileevent' mechanism
www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AIO.htm
TK/AFTER support class for Tk::Widget::after
www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AAfter.htm

611 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:36:11 ]
>>608
package require Tk

pack [text .t] -side bottom -fill both -expand 1
pack [button .start -text Start] -side left

.start configure -command {RunCount 100}

proc RunCount {n} {
for {set i 1} {$i <= $n} {incr i} {
.t insert end $i\r\n
update
.t see end
after 200
}
tk_messageBox -message "End!!"
}

Tcl/Tkで書いたから適当にPerlに脳内変換して



612 名前:592 mailto:sage [2010/05/21(金) 21:14:28 ]
ActiveTcl 8.5.8.2が出ていたので試してみましたが、8.5.8.1同様IMEが動くとwishが
落ちます。
一応、連絡しておきます。


613 名前:デフォルトの名無しさん [2010/06/02(水) 19:48:15 ]
Tcl/Tk超初心者なんですが教えて欲しいことがあります。
tcomを使ってInternetExploerでホームページを表示させて
そのホームページのソースを取得してソースを表示させたいのですが
ホームページの表示までは上手くいったんですがソースの取得ができません。
わかる方いらっしゃったらぜひ教えてください、お願いします。

途中までのソースなんですが

package require tcom

set ie [::tcom::ref createobject "InternetExplorer.Application"]
$ie Visible 1
$ie Navigate "www.yahoo.co.jp/index.html"

ここまではできたんですがこのあとyahooのホームページのソースの取得方法
がわかりません、わかる方いらっしゃったらぜひお願いします。














[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<274KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef