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!








