9

pygtk を使用する次のコードがあります。

attr = pango.AttrList()
attr.change(pango.AttrSize((
            50 * window_height / 100) * 1000, 0, -1))
attr.change(pango.AttrFamily("Sans", 0, -1))
attr.change(pango.AttrWeight(pango.WEIGHT_BOLD, 0, -1))
attr.change(pango.AttrForeground(65535, 65535, 65535, 0, -1))

self.label.set_attributes(attr)

私はそれをpygobjectに移植しようとしていますが、クラスPango.AttrFamilyもPango.AttrWeightもPango.AttrForegroundもありません(そして、Pango.AttrSizeをインスタンス化できません)。

問題は、 、 、および をインストロスペクションでどのように使用pango_attr_size_newするpango_attr_weight_newpango_attr_family_newですpango_attr_foreground_new

マークアップを使用してこれを行うことができることはわかっていますが、1. 属性を使用すると物事が単純になり、2. ここで何が起こっているのか知りたいです! 私はすでにそれを解決するために多くの時間を費やしてきました。

4

2 に答える 2

2

編集:メソッドoverride_fontは非推奨であるため、このページで説明されているように CSS を使用する必要があります - https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-override-font

残りの答えは、歴史のために残されています。

なぜそれがうまくいかないのか、私にはわかりません。

これを行う方法を次に示します。

def set_global_styles(self, editor_widget):
    pango_context = editor_widget.create_pango_context()
    font_description = pango_context.get_font_description()
    increase = 14 #pt 14
    font_size = 1024*increase
    font_description.set_size(font_size)
    editor_widget.override_font(font_description)

これまでのところ、私が見つけた最も簡単な方法です。遅い答えですが、遅くならないよりはましです。

念のため、Pango のリソースと上記のコードを使用します。Pango のすべてのドキュメントが gtk3 に当てはまるかどうかはわかりませんが、うまくいきました。

Pango コンテキスト セットのフォントの説明

Pango フォントの説明

gtk の Pango フォント

パンゴのレイアウト

GtkWidget は、他のオブジェクトの中でもテキスト エディターによって継承されます。

于 2012-08-20T06:02:07.593 に答える
0

このメールから、これが実行時エラーなしで実行されることがわかりました:

    from gi.repository import Pango

    ren = Gtk.CellRendererText()
    ren.set_property('alignment', Pango.Alignment.RIGHT)

私のコードでは、これはコンテンツを右揃えにしませんでしたが、コードに別のエラーがある可能性があります。ここで最も重要なのは、上記のコードが次のような pygtk の翻訳のように見えることですimport pangopango.ALIGN_RIGHT

これはOPに対する完全な答えではありませんが、うまくいけば一歩近づくでしょう。

于 2016-03-06T02:21:45.590 に答える