4

アプリケーションにのリストがありGtk.Entry()、そのうちのいくつかのテキストの色を変更したいと考えています。

私は次のことを試しました:

#!/usr/bin/python3
# Filename: mywindow.py

from gi.repository import Gtk
from gi.repository import Gdk

class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="My window")

        self.mainGrid = Gtk.Grid()
        self.add(self.mainGrid)

        self.myOkEntry = Gtk.Entry()
        self.myOkEntry.set_text("This is OK (green)")
        self.myOkEntry.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0.0, 1.0, 0.0, 0.0))

        self.mainGrid.add(self.myOkEntry)

mainWin = MyWindow()
mainWin.connect("delete-event", Gtk.main_quit)
mainWin.show_all()

Gtk.main()

しかし、その後、テキストは見えなくなりました。Gdk.RGBA に 0.0 から 1.0 までのさまざまな値を試してみましたが、0 から 65000 までは同じでした。別のテスト:

print(Gdk.color_parse("green"))

版画 :

<Gdk.Color(red=0, green=65535, blue=0)>

だから私は試しました:

print(Gdk.RGBA(Gdk.color_parse("green")))

しかし :

File "/usr/lib/python3/dist-packages/gi/overrides/Gdk.py", line 55, in __init__
    self.red = red
TypeError: argument 2: Must be number, not Color

私は少し混乱しています。私が使用するドキュメントは主に次のとおりです
https://python-gtk-3-tutorial.readthedocs.org/en/latest/

CSS スタイリングに関するドキュメントをいくつか見つけました。次のように使用できますか。

GtkEntry {
    color: #000000
}
GtkEntry#ok {
    color: #00cc00
}
GtkEntry#error {
    color: #cc0000
}

たとえばHTMLのように?このドキュメントは、エントリの色に関する以前の質問でリンクされていましたPython3/Gtk3

さて、私の質問は次のとおりです:他の色を変更せずに、1つの Gtk.Entry() のテキストの色を変更するにはどうすればよいですか?

4

2 に答える 2

2

次のように color_parse ロジックでgtk.Widget.modify_fg (Widget は gtk.Entry の基本クラスの 1 つです)を使用できます。

self.myOkEntry.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("green"))
于 2013-03-06T15:32:14.313 に答える