Ubuntu 9.04 で IronPython が動かせるので Gtk# を試してみる。
Mono, Gtk# and ironpython | Kushal , kD & FOSS
まぁ他国ならこんな簡単に見つけることができるんだが。
私がよく書くコードと同様にするなら class を作って
#-*- coding:Latin-1 -*- """ Error #-*- coding:utf-8 -*- """ import clr clr.AddReference('gtk-sharp') import System import Gtk class GtkSharpWindow(Gtk.Window): """ GtkSharp Test """ def __init__(self, title): """ Gtk.Window.__init__(self) is No Constructor has been """ # GtkButton button = Gtk.Button("Click!") button.Clicked += self.on_button_clicked # GtkTextView self.textview = Gtk.TextView() # Packing vbox = Gtk.VBox() vbox.PackStart(button, False, False, 0) vbox.PackStart(self.textview) self.Add(vbox) # self self.DeleteEvent += self.delete_event self.Resize(320, 100) self.ShowAll() def delete_event(self, sender, e): """ Required """ Gtk.Application.Quit() def on_button_clicked(self, sender, e): """ Button Click Signal Handrer """ self.textview.Buffer.SetText("Hello World!") if __name__ == "__main__": Gtk.Application.Init() w = GtkSharpWindow("TitleBar") Gtk.Application.Run()
こんな感じかな。
Gtk.Application.Init() によるライブラリ初期化は必須のようで。
__init__() にはタイトル文字列を入れないと通らない、もっと柔軟にしてくれよ。
親 class の __init__() はやっぱり不要、まぁ Windows 版と同じ exe だし。
pack_start のパラメータは一つか全部しか選べない、PyGtk ならデフォルト引数があるのに。
ShowAll() しないとウインドウを表示できませんので気をつけて。
後は…見ての通り PyGtk とほとんど変わらない。
が、どうしても気になる GtkTextView からの GtkTextBuffer 取得方法。
self.textview.GetBuffer().SetText("Hello World!")
なら解るんだがこんな関数はない。
ついでにメソッドは全部小文字に統一されている GTK+ を何故かキャメルケース化している。
DevHelp が役に立たないような GTK+ バインディングはどうなんだと思うんですけど。
ところで何故 Latin-1 ?って UTF-8 に書き換えてみてよ。
意味ワカンネ、つまり未対応ってことかな。
これじゃリテラルに日本語が使えないわな、方法模索中。
つーかやっぱり文字が見にくいのでコレ用に bash のプロファイルを作るはめになったぞと。
Enjoy!