我想用gi-gtk创建一个条目,如果条目中提供的文本不是预期的格式,则修改backgroundcolor。我试图在gi-gtk entry中查找一个方法,如'setEntryColor',但没有找到。什么是正确的函数来做我想做的事情?
ryevplcw1#
我设法通过使用widgetGetStyleContext、styleContextAddClass和styleContextRemoveClass修改了入口小部件的类。然后,如果所有字符都是数字,我可以通过添加或删除“warning”或“error”类来修改条目的外观。
import Data.Char import qualified Data.GI.Gtk as Gtk import qualified Data.Text as T main :: IO () main = do Gtk.init Nothing window <- Gtk.windowNew Gtk.WindowTypeToplevel Gtk.set window [Gtk.windowTitle Gtk.:= (T.pack $ "test")] vbox <- Gtk.vBoxNew False 5 Gtk.containerAdd window vbox e1 <- Gtk.entryNew e2 <- Gtk.entryNew Gtk.boxPackStart vbox e1 True True 0 Gtk.boxPackStart vbox e2 True True 0 Gtk.onEntryActivate e1 $ do f <- Gtk.entryGetText e1 case all isDigit (T.unpack f) of False -> do ctx <- Gtk.widgetGetStyleContext e1 Gtk.styleContextAddClass ctx (T.pack "warning") True -> do ctx <- Gtk.widgetGetStyleContext e1 Gtk.styleContextRemoveClass ctx (T.pack "warning") Gtk.widgetShowAll window Gtk.onWidgetDestroy window Gtk.mainQuit Gtk.main
就是这样
xzv2uavs2#
您发布的链接已包含答案。Gtk.Entry有css节点,你必须使用css来改变Gtk.Entry的文本颜色或任何其他特征。为此,必须使用Gtk.CssProvider。编辑:一个小Python的故事:首先创建一个包含css类的test.css文件,其中包含您想要进行的更改,然后:
Gtk.Entry
Gtk.CssProvider
self.cssProvider = Gtk.CssProvider() self.file = Gio.File.new_for_path('test.css') self.cssProvider.load_from_file(self.file) self.entry.get_style_context().add_provider(self.cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) self.entry.add_css_class('red-text-image')
2条答案
按热度按时间ryevplcw1#
我设法通过使用widgetGetStyleContext、styleContextAddClass和styleContextRemoveClass修改了入口小部件的类。
然后,如果所有字符都是数字,我可以通过添加或删除“warning”或“error”类来修改条目的外观。
就是这样
xzv2uavs2#
您发布的链接已包含答案。
Gtk.Entry
有css节点,你必须使用css来改变Gtk.Entry
的文本颜色或任何其他特征。为此,必须使用Gtk.CssProvider
。编辑:一个小Python的故事:首先创建一个包含css类的test.css文件,其中包含您想要进行的更改,然后: