2011-01-17 13 views
3

私は固定サイズgtk.Labelです。ラベル内に収まるようにテキストのサイズを自動的に変更したいと思います。幅が固定されていないフォントでこれを行うためのエレガントな方法はありますか?固定サイズのPyGTKラベルに合わせてテキストのサイズを自動的に変更するにはどうすればよいですか?

my_label = gtk.Label() 

# Short text segment 
my_label.set_text("Short text segment.") 

# Long text segment 
### Determine required text size here. ### 
my_label.set_text("This is a really long text segment that I would like to resize." 

答えて

0

私はこれをテストする時間を持っていなかったが、これらの線に沿って何かは、あなたがやりたいことするべきである:

size = 12000 # thousandths of a point 
temp_label = gtk.Label(my_label.get_text()) 
while temp_label.get_width() > my_label.get_width(): 
    size -= 100 
    temp_label.set_attributes(pango.Attrlist().insert(pango.AttrSize(size)) 
my_label = temp_label 

これは、あなたが直接my_labelの幅を強制していることを前提としています。 my_labelが他のもの(親コンテナなど)から幅を取得している場合は、my_label.get_width()の代わりに、希望する最大幅を指定します。

これは、テキストが最終的に収まるまで、ポイントの1/10ずつフォントサイズを繰り返し落とすだけです。サイズを微調整して自由に設定してください。= 100を任意に増やしてください(小さければ小さいほど細かくなります)。

それはそれほどではないと私はそれを後で洗練することができます私に教えてください。

+0

私は考えていますが、gtk.Labelはget_width関数を持っていないようです。 – williampli

関連する問題