●●●●TCL/TKなら俺に聞け 2●●●●
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/05/01(火) 14:52:44プロジェクト本拠地
http://tcl.sourceforge.net/
最新版ソースコード
ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/
The Tcler's Wiki
http://wiki.tcl.tk/
The comp.lang.tcl Newsgroup
http://groups.google.com/group/comp.lang.tcl/
ActiveTcl
http://www.activestate.com/products/activetcl/
【日本語サイト】
もっとTcl/Tk
http://www.interq.or.jp/japan/s-imai/tcltk/
Tcl/Tk Scripting Laboratory
http://www.geocities.jp/urano343/tcltk.html
Tcl/Tk Primer
http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/
Tcl 8.4.1 Manual Command Reference
http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm
CategoryTclTk - mynote
http://reddog.s35.xrea.com/wiki/CategoryTclTk.html
【前スレ】
●●●●TCL/TKなら俺に聞け●●●●
http://pc11.2ch.net/test/read.cgi/tech/1033628416/
0567本田
2009/12/18(金) 00:55:20>デファクトスタンダード
incrtclだと思う。
http://incrtcl.sourceforge.net/iwidgets/iwidgets/scrolledhtml.html
0568デフォルトの名無しさん
2009/12/20(日) 02:07:53Ruby/Tkで、
htmldoc = '<html>〜</html>'
html = Tk::HTML_Widget.new.pack
html.parse(htmldoc)
とするとSegmentation faultが出るのは自分だけかな……。
TkHTML3、Tcl/Tk8.4、Ruby1.9.1環境です。
0569デフォルトの名無しさん
2009/12/28(月) 17:45:58だれかTcl/Tkでmigemo使えるようにしろよ〜
0570デフォルトの名無しさん
2009/12/28(月) 20:24:160571デフォルトの名無しさん
2009/12/29(火) 09:37:18ckて使っている人いますか?
なんか語りませんか
0572デフォルトの名無しさん
2010/01/02(土) 10:50:57大昔、CTk http://wiki.tcl.tk/5016 は使ったことがある。
ckも2001年頃から開発が止まっているみたいけど、8.5.8環境でもちゃんと動く?
0573デフォルトの名無しさん
2010/01/02(土) 20:43:14ページによると8.0-8.4が恐らくターゲットかと。うちでは8.0で動いています。
キャンバスなど対応しないウイジェットもあるので制限は多いですが、
Guiのプログラムとコンソールのプログラムが一つのプログラムでかけるのが
凄いです。(tcletも使えば一石三鳥?)
CTKはどんな感じでしたか?
Ckの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。
putsなど標準入出力ではOkですが。
0574本田
2010/01/05(火) 22:51:35cursesってUNICODEに対応してないのかな?
0575デフォルトの名無しさん
2010/01/06(水) 23:26:350576デフォルトの名無しさん
2010/01/06(水) 23:35:47CTk使っていたのは日本語パッチ版が使いたくて8.0で粘っていたころなので、さすがに覚えていない。
当時はMulti-Byte文字を使えるcursesもほとんど無くて、日本語は最初から諦めていたと思う。
Multi-Byte文字はCkとcursesの2段階で対処が必要だと思うし、8.0だとそもそも多国語対応していない
ような気がするので、tcl内部とcursesと実際の表示(xtermとか)のencodingを合わせないとだめだよね。
がんばってね。
0577デフォルトの名無しさん
2010/01/18(月) 15:28:420578デフォルトの名無しさん
2010/01/18(月) 15:34:43いや〜、あんなもん、tkが付いてなかったら使いたくねえ!
0579デフォルトの名無しさん
2010/01/18(月) 15:39:50tk以上の発明品が生まれなかったからじゃないかな。
結局Tcl/Tkが作られた当時はアプリのスクリプト言語をサポートするという発想が新しすぎたんだと思うよ。
後スクリプト言語としては文字列と整数のデータ型の区別がされてなくて微妙に使いにくいとか。
元々HTMLの埋込み言語として開発されたPHPが、発展してフレームワークが作られるようになると
HTMLの生成がテンプレートエンジン越しになって本来の埋込スクリプトが全く使われなくなったりね。
開発当初の目的と実用される用途が一致しないのはよくあること。
0580デフォルトの名無しさん
2010/01/18(月) 22:27:440581デフォルトの名無しさん
2010/01/19(火) 00:46:35GNUに嫌われたから
0582デフォルトの名無しさん
2010/01/19(火) 12:33:16guileも全然普及してないな。
0583デフォルトの名無しさん
2010/01/19(火) 21:15:09Guile 哀れw
0584デフォルトの名無しさん
2010/01/26(火) 17:16:130585デフォルトの名無しさん
2010/02/03(水) 23:03:230586デフォルトの名無しさん
2010/02/14(日) 10:09:590587デフォルトの名無しさん
2010/02/14(日) 20:52:36蛙と蛇だしな・・・
0588デフォルトの名無しさん
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
0589デフォルトの名無しさん
2010/02/15(月) 01:13:580590デフォルトの名無しさん
2010/02/15(月) 08:16:09ウィンドウのサイズ、移動が出来なくなりますが、
タイトルバーは消えませんでした。
0591デフォルトの名無しさん
2010/02/15(月) 21:37:46バージョンくらいかけよアホ。これでも読んでろ
http://wiki.tcl.tk/13734
0592デフォルトの名無しさん
2010/03/11(木) 21:16:58text .t; pack .t -expand yes -fill both だけのプログラムでも再現する。
IMEで1バイト文字を選択して確定しても落ちるのでIME制御で何か壊しているみたい。
こんな時に限って旧のバックアップが無いので確認できないけど8.5.8は大丈夫と思う。
だれか8.5.8残している人。ください。
0593デフォルトの名無しさん
2010/03/13(土) 16:38:510594デフォルトの名無しさん
2010/03/17(水) 02:28:470595デフォルトの名無しさん
2010/03/17(水) 23:05:28ksk
0596本田
2010/03/17(水) 23:34:20ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe
0597592
2010/03/18(木) 21:26:34ActiveState ポリシー変えたらしくて、Community Edition(Free)は最新バージョンしか
入手できなくなってます。
しばらくはtclkitでしのぎます。
0598本田
2010/03/18(木) 22:48:35ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe でgoogleれ。
0599デフォルトの名無しさん
2010/03/18(木) 22:54:450601デフォルトの名無しさん
2010/04/27(火) 22:17:26文字列を表示させることを考えていますがうまくいきません。
ソースは下になります。
何かおかしな点ありますでしょうか?
-----
$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();
-----
0602デフォルトの名無しさん
2010/04/27(火) 23:35:32リファレンスマニュアルとか調べてみ
0603デフォルトの名無しさん
2010/04/28(水) 06:29:410604デフォルトの名無しさん
2010/04/29(木) 06:13:30ありがとうございます。ちょっと調べてみます。
>>603
上記ソースの場合、立ち上がりすらしない。
sleepをコメントアウトしたら1行づつ出力されずに、
溜め込んだ情報を一気に吐き出すといった感じです。
0605デフォルトの名無しさん
2010/04/29(木) 15:45:57描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら
描画出来ないと思う。
ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。
どうしても今のループにしたければ、updateすると動くかもしれない。
0606デフォルトの名無しさん
2010/04/29(木) 21:57:57updateでできました!
ありがとうございました_( . _ . )_
0607デフォルトの名無しさん
2010/04/29(木) 23:30:280608デフォルトの名無しさん
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();
-----
0609デフォルトの名無しさん
2010/05/02(日) 22:40:15君はイベント駆動モデルという物を全く理解していない。
>描画は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();
0610本田
2010/05/02(日) 23:45:07Tk Documentation Table of Contents
http://www-users.cs.umn.edu/~amundson/perl/perltk/toc.html
fileevent Execute a callback when a file becomes readable or writable
http://www-users.cs.umn.edu/~amundson/perl/perltk/fileevent.htm
after Execute a command after a time delay
http://www-users.cs.umn.edu/~amundson/perl/perltk/after.htm
tkwait Wait for variable to change or window to be destroyed
http://www-users.cs.umn.edu/~amundson/perl/perltk/tkwait.htm
IO high level interface to Tk's 'fileevent' mechanism
http://www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AIO.htm
TK/AFTER support class for Tk::Widget::after
http://www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AAfter.htm
0611デフォルトの名無しさん
2010/05/05(水) 01:36:11package 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に脳内変換して
0612592
2010/05/21(金) 21:14:28落ちます。
一応、連絡しておきます。
0613デフォルトの名無しさん
2010/06/02(水) 19:48:15tcomを使ってInternetExploerでホームページを表示させて
そのホームページのソースを取得してソースを表示させたいのですが
ホームページの表示までは上手くいったんですがソースの取得ができません。
わかる方いらっしゃったらぜひ教えてください、お願いします。
途中までのソースなんですが
package require tcom
set ie [::tcom::ref createobject "InternetExplorer.Application"]
$ie Visible 1
$ie Navigate "http://www.yahoo.co.jp/index.html"
ここまではできたんですがこのあとyahooのホームページのソースの取得方法
がわかりません、わかる方いらっしゃったらぜひお願いします。
0614デフォルトの名無しさん
2010/06/02(水) 22:19:300615デフォルトの名無しさん
2010/06/03(木) 09:36:16返答ありがとうございます、初心者なのでHTTPでの取り方すらわからないのです。
もともとTcl/Tkでどうやってホームページの表示をさせるかがわからなくて
いろいろ調べた挙句tcomにいきついた次第です。できればtcomでできたらいいなー
というのが自分の希望なんですが、調べてみたんですがいまいちわからなくて
ここに行き着いたということです。
0616デフォルトの名無しさん
2010/06/03(木) 09:39:40ほい。ぐぐれ。
http://tmml.sourceforge.net/doc/tcl/http.html
0617デフォルトの名無しさん
2010/06/03(木) 13:05:59ありがとうございます、やってみます
0618本田
2010/06/05(土) 05:37:34URI utilities
http://tcllib.sourceforge.net/doc/uri.html
0619本田
2010/06/05(土) 06:11:07package require uri
set u http://www.yahoo.co.jp/index.html
set f index.html
set token [::uri::geturl $u]
if { [catch {::http::data $token} html] } {
puts stderr "Could not get $url\n$html"
exit 1
}
if { [catch {open $f w} fp ] } {
puts stderr "Could not open $f\n$fp"
exit 1
}
puts $fp $html
close $fp
0620本田
2010/06/05(土) 14:29:34optcl
http://wiki.tcl.tk/1822
http://www.patthoyts.tk/programming/optcl3010.zip
http://www.patthoyts.tk/programming/optcl-src.zip
WippleWobble - A Mini Web Browser (for Windows)
http://wiki.tcl.tk/4105
0621デフォルトの名無しさん
2010/06/30(水) 07:31:52widgetに入れず、Canvasのcreate_textに設定するwidthの様にheightを擬似的にでもどうにかして作りたいのですが何か良い方法は無いでしょうか。
ご教示お願い致します。
0622デフォルトの名無しさん
2010/07/02(金) 01:54:21heightを作るっていう意味がわからない
0623デフォルトの名無しさん
2010/07/02(金) 08:08:21適当なtextの量自体を指定するしかないのでしょうか。
文字によってpixel幅が違うので結局label等(幅を取得したら捨てる。)
に入れ込むtextを一文字ずつlabelに入れて、そのlabel幅を取得し、
その幅から指定したpixel分のtextをcreate_textに入れ込めば出来そうですが・・
余りに遠回りで・・。
もう少し簡潔に文字数を制限したいのですが
tkがどう動作しているのか未だ良く分かっていません。
0624本田
2010/07/02(金) 22:52:59プロポーショナルフォントを使わずに、
等幅のフォントを使えば、
計算が簡単になりそうです。
0625デフォルトの名無しさん
2010/07/03(土) 03:57:59>>624
有り難うございます。
プロポーショナルフォントというんですね・・初めて知りました。
因みに自分足らない頭で623の内容をpythonのIDLEで書いてみたら
異様に重い上に、良く分からないエラーが出ました・・とほほ
後程、等幅フォントで再度書いてみます。
fontの高さには全角、半角も無いので
どこで改行されてるかさえ、得られれば
簡潔になるのでは、と
今の所textに直接pixel指定で改行を追加するモジュールを探しています。(どれもカラムっぽいですが・・)
font metricsも面白そうなのでついでに調べてます。
0626デフォルトの名無しさん
2010/07/03(土) 10:56:10font measureで文字列のpixel幅を得られる
のは?
0627デフォルトの名無しさん
2010/07/03(土) 11:49:40>>626
有り難うございます。
font measureで出来そうです。
0628本田
2010/07/03(土) 17:32:43老婆心ながら、
一つのスクリーン上に一つのカンバスを使って複雑なウイジェットを作る以外に、
まず一つのスクリーンを複数のフレームに分割して、
一つ一つのフレーム上にメニュー、テキストやカンバスを配置する方法もあります。
0629デフォルトの名無しさん
2010/07/03(土) 20:28:35>>628
有り難うございます。
カンバス自体は一応フレームに入っています。
・・がデザイン的にcanvasの内容をフレーム分けは難しいです。
まずgridで作成した所、重くて次にplace、そしてcanvas上にしています。
canvas上で作ると重いかと思っていたのですが、canvasで作ると割と軽快だったので
(textを入れる以前の話ですけれど)
canvasのままで来ているのと、canvasの自由度の高さが何より気に入っています。
canvasに変更する際からtextのこの問題がずっとネックだったので
解決出来そうで何よりです。
widgetに入れたくなかった理由としては、
折角canvasなので背景に画像を張り込める様にもしたかったからです。
マウスバインドもウイジェットに邪魔されず一つで掛けられますし。
キーバインドも勿論入れます。
どうしようも無くなった場合はplaceに戻ろうかと思っています。
0630デフォルトの名無しさん
2010/07/19(月) 14:33:01xspin.tclを起動しようとしたら「このファイルの種類を開くプログラムを選択してください」とでるようになってしまいました。
どのプログラムを選択すればいいか分からないし、戻し方も分からないので助けてください。
0631630
2010/07/19(月) 14:48:220632デフォルトの名無しさん
2010/08/04(水) 12:21:06最初に1を代入した変数を1ビットづつ左シフトしていくと80000000hの次は0hになってしまうのですが、
なにも指定しないと変数はUINT32で定義されているのでしょうか?
明示的にUINT64で定義する事は可能ですか?
set shift 1
for { set i 0 } { $i<64 } { incr i } {
set shift_h [format %016X $shift]
set shift [expr $shift << 1]
}
0633デフォルトの名無しさん
2010/08/12(木) 11:58:36サーバ(Win/Linuxじゃないよ)用に自分でコンパイルした8.5.8でも同じ結果になった。
ソースを簡単に眺めたところ、内部32bit型→64bit型に拡張する処理は見つかったけど
なぜ情報落ちするのかは判らなかった。
バグ報告するのが良いと思う。
ひょっとして、64bit環境(OS)だと問題無いのかもしれない。(うちは全部32bit環境)
0634デフォルトの名無しさん
2010/08/12(木) 19:23:06set shift 1
for { set i 0 } { $i < 64 } { incr i } {
puts [format %016lX $shift]
set shift [expr $shift << 1]
}
The fifth part of a conversion specifier is a size modifier, which must be ll, h, or l.
If it is ll it specifies that an integer value is taken without truncation for conversion
to a formatted substring. If it is h it specifies that an integer value is truncated to
a 16-bit range before converting. This option is rarely useful. If it is l it specifies
that the integer value is truncated to the same range as that produced by the wide()
function of the expr command (at least a 64-bit range). If neither h nor l are present,
the integer value is truncated to the same range as that produced by the int() function
of the expr command (at least a 32-bit range, but determined by the value of
tcl_platform(wordSize)).
http://www.tcl.tk/man/tcl8.5/TclCmd/format.htm#M15
マニュアル嫁。
0636本田
2010/10/02(土) 02:16:11http://code.activestate.com/lists/activetcl/4478/
0637デフォルトの名無しさん
2010/10/11(月) 19:15:110638592
2010/10/12(火) 07:22:49直ったようです。
text widgetで漢字を入力しても落ちなくなりました。
0639デフォルトの名無しさん
2010/10/12(火) 19:36:18それは、ActiveTclのどのバージョンから?
0640592
2010/10/14(木) 00:15:170641デフォルトの名無しさん
2010/10/15(金) 13:32:100642デフォルトの名無しさん
2010/10/16(土) 14:52:07package require Tk
pack [text .text]
bind .text <Key> {puts "Pressed %K"}
http://www.tcl.tk/man/tcl/TkCmd/bind.htm
マニュアル嫁
0643Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 23:40:370644Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 23:50:250645Perl忍者 ◆M5ZWRnXOj6
2010/10/30(土) 18:13:15入力できません
なんか前にそれで設定をして うてるようにしたんですが
scimなんとか 入力はできるんですが 日本語入力ができません
どうすればいいですか教えてください
0646デフォルトの名無しさん
2010/10/30(土) 18:17:43この文章どうやって打ってるんだよw
0647Perl忍者 ◆M5ZWRnXOj6
2010/10/30(土) 18:35:08Perl/Tkでの入力のときできない
XMODIFIERS="@im=none"とやってもできない
なんで 教えて
0648Perl忍者 ◆M5ZWRnXOj6
2010/10/30(土) 18:36:20とやったら入力できるようになるけど
日本語入力ができない
重要:「日本語入力ができない」
教えて
0649デフォルトの名無しさん
2010/10/30(土) 18:55:110650デフォルトの名無しさん
2010/11/06(土) 21:07:460651デフォルトの名無しさん
2010/11/08(月) 00:35:040652デフォルトの名無しさん
2010/11/08(月) 00:45:320653デフォルトの名無しさん
2010/11/08(月) 10:11:470654本田
2010/11/08(月) 21:51:18> Postscript以外は、できないでしょうか?
GhostscriptでPostscriptをPDFやPNGに変換できるよ。
0655デフォルトの名無しさん
2010/11/09(火) 00:35:082 tkpathっていうcanvasと互換性のある拡張がある。
0656Perl忍者 ◆V8M/4amdko
2010/11/10(水) 18:58:250657デフォルトの名無しさん
2010/11/11(木) 21:34:13アクティブウインドウのスクリーンショットを取る外部アプリを起動すればできますか?
できればbmp,jpg,gif等に変換したいので。
0658デフォルトの名無しさん
2010/11/12(金) 09:48:34*.psからフィルタで変換の方がスマートだけど。
0659デフォルトの名無しさん
2010/11/12(金) 13:28:10PSからの変換もいろんなソフトを使いましたが、思った様に上手くいきません。
逆に変換フィルタで良いのがあれば、教えてください。
0660デフォルトの名無しさん
2010/11/12(金) 13:34:56canvasの内容をSVG化して書き出す方法が紹介されてる。
http://wiki.tcl.tk/4534
他にはImageMagickを操作して直接画像を作るかだなぁ。
0661デフォルトの名無しさん
2010/11/12(金) 21:31:10これは、凄い。
itemgetで情報をもってきて、imageで再描画してるみたいだ。
でも、このやり方だとXBM情報とかは再生できませんね。
0662デフォルトの名無しさん
2010/11/14(日) 20:28:320663デフォルトの名無しさん
2010/11/14(日) 20:53:560664本田
2010/11/16(火) 06:10:49http://wiki.tcl.tk/20386
0665本田
2010/11/18(木) 08:32:31http://www.ibm.com/developerworks/jp/webservices/library/ws-xtcl/
0666本田
2010/11/25(木) 06:14:36http://wfr.tcl.tk/1012
MS Office - Excel
package require tcom
set application [::tcom::ref createobject "Excel.Application"]
set workbooks [$application Workbooks]
set workbook [$workbooks Add]
set worksheets [$workbook Worksheets]
OpenOffice - Calc
package require tcom
set application [::tcom::ref createobject "com.sun.star.ServiceManager"]
set desktop [$application createInstance com.sun.star.frame.Desktop]
array set arguments {}
set worksheets [$desktop LoadComponentFromUrl private:factory/scalc _blank 0 [parray arguments]]
■ このスレッドは過去ログ倉庫に格納されています