0

私は pygtk を使用しており、フォントと色のダイアログを 1 つに組み合わせる最良の方法を検索しています。

4

1 に答える 1

2

ウィジェットのスタイルの「ベース」部分と「テキスト」部分を変更する必要があります。「前景」プロパティを編集することもできます。gtk.Widget から継承されたこれらのスタイル プロパティを変更するための便利な簡易メソッドは次のとおりです。

widget.modify_fg(state, color)
widget.modify_bg(state, color)
widget.modify_base(state, color)
widget.modify_text(state, color)

gtk.Label、gtk.Button、gtk.Paned、gtk.Frame など (FAQ 3.5 を参照) などのウィンドウレス ウィジェットは、gtk.Widget から継承されているにもかかわらず、それらのプロパティが存在しないため、背景色と基本色を変更できません。彼らのために。それらを取得したい場合は、このプロパティを追加する gtk.EventBox 内にウィジェットを挿入する必要があります。例:

import gtk

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("destroy", gtk.mainquit)

label = gtk.Label("one, two, testing...")
eb = gtk.EventBox()
eb.add(label)
eb.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("blue"))
window.add(eb)

window.show_all()
gtk.main()

また、このgtk.gdk.Window — ターゲット ウィンドウ システムの画面上の表示領域を読むことをお勧めします。

一方、pygtkには、色を変更したり、フォントを変更または選択したりするためのダイアログがあります。

例 1 :フォントを変更する

import gtk
import pango
class PyApp(gtk.Window): 
    def __init__(self):
        gtk.Window.__init__(self)
        self.set_size_request(300, 150)
        self.set_position(gtk.WIN_POS_CENTER)
        self.connect("destroy", gtk.main_quit)
        self.set_title("Font Selection Dialog")


        self.label = gtk.Label("The only victory over love is flight.")
        button = gtk.Button("Select font")
        button.connect("clicked", self.on_clicked)

        fix = gtk.Fixed()
        fix.put(button, 100, 30)
        fix.put(self.label, 30, 90)
        self.add(fix)

        self.show_all()

    def on_clicked(self, widget):
        fdia = gtk.FontSelectionDialog("Select font name")
        response = fdia.run()

        if response == gtk.RESPONSE_OK:
            font_desc = pango.FontDescription(fdia.get_font_name())
            if font_desc:
                self.label.modify_font(font_desc)

        fdia.destroy()
PyApp()
gtk.main()

例 2:ラベルの色を変更する

 import gtk
class PyApp(gtk.Window): 
    def __init__(self):
        super(PyApp, self).__init__()

        self.set_size_request(300, 150)
        self.set_position(gtk.WIN_POS_CENTER)
        self.connect("destroy", gtk.main_quit)
        self.set_title("Color Selection Dialog")


        self.label = gtk.Label("The only victory over love is flight.")
        button = gtk.Button("Select color")
        button.connect("clicked", self.on_clicked)

        fix = gtk.Fixed()
        fix.put(button, 100, 30)
        fix.put(self.label, 30, 90)
        self.add(fix)

        self.show_all()

    def on_clicked(self, widget):
        cdia = gtk.ColorSelectionDialog("Select color")
        response = cdia.run()

        if response == gtk.RESPONSE_OK:
            colorsel = cdia.colorsel
            color = colorsel.get_current_color()
            self.label.modify_fg(gtk.STATE_NORMAL, color)

        cdia.destroy()
PyApp()
gtk.main()

それが役立つことを願っています。

于 2013-04-25T13:36:54.100 に答える