2008/11/18(火) [n年前の日記]
#1 [prog] Tk用のGUIビルダーの使い方がよくわからず
数日前から python + tkinter (python用のtkみたいなもの?)で変換ツールの類を書いてるのだけど。GUIレイアウトを決める際に、
_SpecTcl
や
_GUIビルダー
*1
なる、GUIビルダー? RADツール? を使ってたり。しかし使い方がよくわからず。
◎ セルの結合(?)の仕方が判らない。 :
SpecTcl はグリッドでレイアウトしていくのだけど。Excelなどの表計算ソフトでいうところの「セルの結合」をどうやればいいのかがわからなくてハマる。出力ソースに対して、エディタ上から直接、指定の記述を書いてしまえばできなくもないだろうけど…。
やり方判明。セル(?)の中にwidgetを一旦配置して、そのwidgetを引き伸ばすことでセル結合ができるらしい。widgetを選択した状態で境界部分にマウスカーソルを合わせるとマウスカーソルの形が変わるから、その状態でセルを結合したい方向にD&Dする模様。…セルを選択して、セルのプロパティ変更で結合できればいいのに。と思ったけど、ソース上ではwidgetを配置した時に結合するよう指定しているから、セルに対していきなり結合しろというわけにもいかない、のかもしれない。
やり方判明。セル(?)の中にwidgetを一旦配置して、そのwidgetを引き伸ばすことでセル結合ができるらしい。widgetを選択した状態で境界部分にマウスカーソルを合わせるとマウスカーソルの形が変わるから、その状態でセルを結合したい方向にD&Dする模様。…セルを選択して、セルのプロパティ変更で結合できればいいのに。と思ったけど、ソース上ではwidgetを配置した時に結合するよう指定しているから、セルに対していきなり結合しろというわけにもいかない、のかもしれない。
◎ Text widget の配置で悩む。 :
ScrolledTextを配置したいのだけど…。SpecTcl にはそんな widget のアイコンはないし。GUIビルダーのほうは、ScrolledText が pmv なるカテゴリの中に入っていて、そのまま配置するとテスト表示時にエラーが出てしまう。これもエディタ上から直接書き換えてしまえばできなくもないけど…。
Python + tkinter ではなく、Tcl/Tk 用としてレイアウトするのであれば、Text と scrollbar を関連付ける(?)ことが容易らしい。メインメニューの Commands の中に、Attach Scrollbars という項目があって、ソレを選ぶと Text の周辺に配置した scrollbar とイイ感じに関連付けてくれる。が、python + tkinter 用として作業してる場合は、その項目はグレーアウトしたままで。どうやらこのツールは、Tcl/Tk用として使うことを想定して作ってあるらしい。というか元々Tcl/Tk 用のツールだし。
Python + tkinter ではなく、Tcl/Tk 用としてレイアウトするのであれば、Text と scrollbar を関連付ける(?)ことが容易らしい。メインメニューの Commands の中に、Attach Scrollbars という項目があって、ソレを選ぶと Text の周辺に配置した scrollbar とイイ感じに関連付けてくれる。が、python + tkinter 用として作業してる場合は、その項目はグレーアウトしたままで。どうやらこのツールは、Tcl/Tk用として使うことを想定して作ってあるらしい。というか元々Tcl/Tk 用のツールだし。
◎ ヨサゲなGUIビルダーが見当たらない。 :
Tk は、Tcl はもちろん、Perl、Ruby、Python あたりでも使えるようになっていて、対応してるスクリプト言語が比較的多い・この手のソレでは結構標準とされてる場合が多いような気がするのだけど。その割に、GUIでレイアウトしていく的なヨサゲなツールがあまり見つからず、なんだか不思議。
勝手な想像だけど、○○/Tkってのは、エディタでひたすらガリガリ書いていくことを前提にしてるのかもしれないなと。あるいは、「今更Tkなんて使ってられるかよ。古いし機能も少ないし」的な空気があるのだろうかとも。対応してるスクリプト言語が多いあたり、あるいは、各スクリプト言語に標準でライブラリ(?)が入ってる場面が多いあたり、Tkで済みそうならTkでええやん、という気もするのだけど。使うメリットが結構ありそうな気もするのだけど、そのへんどうなんだろう。
というか、Wikipedia の _ウィジェット・ツールキット のページを見る限り、この手のツールキット?はたくさんあるらしいのだけど。widgetのレイアウトができる、フリーのヨサゲなツール・比較的標準とされているツールが見当たらないのもなんだか不思議。
今後、Webアプリ?なども、その手のレイアウトをガンガンやることになるだろうと、いや、もうやってるだろうと思うのだけど。皆、その都度エディタ上で結構あてずっぽうにレイアウトしていくのだろうか。なわけないよな。html が、html と css に分離したように、コードとGUIレイアウトも分離したほうがいいよな。で、widget のレイアウトはあちらこちらに流用可能に、みたいな。… wxWidgets を少し触った時に、xml でレイアウト情報を作る・分離しておく、てなアプローチを見かけた記憶もあるけれど。そういうやり方が標準にならないものかしら。
Adobe だの Google だのあるいは MS だのでそのへんの音頭を取らないかしら。あるいは既に取り始めていたりしないのだろうか。と思って検索してみたら MS なんかは _そういうやり方 をしてるみたいで。知らなかった。てことは、そのうちそういうのが当たり前になるのかな。と思ったけど、考えてみれば未だにcssなんかはエディタ上で手打ちで作ってたりもするような。ということは…むむむ。
勝手な想像だけど、○○/Tkってのは、エディタでひたすらガリガリ書いていくことを前提にしてるのかもしれないなと。あるいは、「今更Tkなんて使ってられるかよ。古いし機能も少ないし」的な空気があるのだろうかとも。対応してるスクリプト言語が多いあたり、あるいは、各スクリプト言語に標準でライブラリ(?)が入ってる場面が多いあたり、Tkで済みそうならTkでええやん、という気もするのだけど。使うメリットが結構ありそうな気もするのだけど、そのへんどうなんだろう。
というか、Wikipedia の _ウィジェット・ツールキット のページを見る限り、この手のツールキット?はたくさんあるらしいのだけど。widgetのレイアウトができる、フリーのヨサゲなツール・比較的標準とされているツールが見当たらないのもなんだか不思議。
今後、Webアプリ?なども、その手のレイアウトをガンガンやることになるだろうと、いや、もうやってるだろうと思うのだけど。皆、その都度エディタ上で結構あてずっぽうにレイアウトしていくのだろうか。なわけないよな。html が、html と css に分離したように、コードとGUIレイアウトも分離したほうがいいよな。で、widget のレイアウトはあちらこちらに流用可能に、みたいな。… wxWidgets を少し触った時に、xml でレイアウト情報を作る・分離しておく、てなアプローチを見かけた記憶もあるけれど。そういうやり方が標準にならないものかしら。
Adobe だの Google だのあるいは MS だのでそのへんの音頭を取らないかしら。あるいは既に取り始めていたりしないのだろうか。と思って検索してみたら MS なんかは _そういうやり方 をしてるみたいで。知らなかった。てことは、そのうちそういうのが当たり前になるのかな。と思ったけど、考えてみれば未だにcssなんかはエディタ上で手打ちで作ってたりもするような。ということは…むむむ。
◎ _Cameron Laird's personal notes on Python GUIs :
*1: 正式名称不明。ショートカットを作ったら TDK Basekit 8.4 for Windows という名前になったけど…。Komod IDE に使われてるらしい?
[ ツッコむ ]
以上です。