2015年
7月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2015-07-08 ruby/tkからruby/gtk2への移行

_ tkとgtk2の違い

これまで、rubyでGUIを作る必要があるときには、主にtkを使っていた。しかし、最近のubuntuは、ruby/tkとは相性が悪いようで、今後はruby/tkがどうなって行くのかが不安である。そこで、ruby/tkの代わりにruby/gtk2を使ってみることにした。これまでtkを使って書いていたのものを、gtkに簡単に移植するために、tkライクにgtkを使えるwrapperのようなものを書いたら、なんとかひとつのプログラムの移植は完了した。その作業の中で、tkとgtkの違いについて、いくつか感じたことを書いておこう。

tkの場合には、toplevelの中に、一つずつpackしたり、frameを作ってその中にpackしたりして、配置する。一方、gtkでは、windowの中に入れることができるのは、一つだけで、通常はvboxなどを入れて、その中に配置していく。わざわざboxを入れないといけないのは、少し面倒だなと感じた。

面倒と言えば、gtkではwindowを閉じたときの処理とか、fileを開くための画面などで、ボタンを押したときの処理を一々指定しないといけない。これは、細かい指定ができるという意味ではメリットかも知れないが、何も指定しなくても、cancelのときは、普通にcancelしてくれる方が良い気もする。

gtkでaddしたあとにshowしないといけないのも、面倒かな。

また、tclの仕様のために、tkの場合には、数字という概念があまり無いので、数字を扱うときには、rubyで受け取るときに、数字に変換する必要がある。

まとめると、ruby/tkはオプションの指定などの仕方が独特で、取っ付きにくいけど、意外に指定することが少ない場合もある。ruby/gtkはきめ細やかな設定ができる代わりに、デフォルトの設定が少なくて、いろいろと指定する必要がある。まあ、一応つかえるようになってしまえば、tkもgtkもあまり変わらない気がする。