Прошу прощения за мой английский.Почему стиль css не работает на GtkButton?
Я пытаюсь изменить цвет фона GtkButton с помощью файла css, но я не могу. Я попробовал несколько примеров, которые я нашел в Интернете, но никто не работает. Я пишу два примера. Один в Python 3.2.3, а другой в C Я использую Gtk + 3.6 и Kubuntu 12.10.
Это код одного из них:
from gi.repository import Gtk, Gdk
class MainWindow(Gtk.Window):
def __init__(self):
super().__init__()
vbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.VERTICAL)
self.add(vbox)
self.entries = [ Gtk.Entry() for i in range(3) ]
for e in self.entries:
vbox.pack_start(e, True, True, 0)
e.connect("changed", self.on_entry_changed)
e.set_text('123')
button=Gtk.Button(label='ok')
vbox.pack_end(button,True,True,0)
def on_entry_changed(self,entry):
ctx = entry.get_style_context()
if not entry.get_text().isnumeric():
ctx.add_class('invalid')
else:
ctx.remove_class('invalid')
cssProvider = Gtk.CssProvider()
cssProvider.load_from_path('style.css')
screen = Gdk.Screen.get_default()
styleContext = Gtk.StyleContext()
styleContext.add_provider_for_screen(screen, cssProvider,
Gtk.STYLE_PROVIDER_PRIORITY_USER) # With the others GTK_STYLE_PROVIDER_PRIORITY values get the same result.
window = MainWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()
и style.css
GtkEntry.invalid {
background-color: #ffaaaa;
background: #ffaaaa;
}
GtkButton {
engine: oxygen-gtk; /*tried also with 'none' and without setting engine*/
background-color: green;
background: green;
}
Записи хорошо работает ... изменение Б.Г. цвета. Но кнопка «Нет», и нет сообщений об ошибках.
EDIT3: (Удалены превью редактирует и изменить некоторые теги) ... Подводя итог я пытался изменить цвет кнопки со всеми кодами Python, C и C++, которые я нашел в Интернете безуспешно. Я прочитал все учебники, которые я нашел, и справочное руководство GTK + 3. Все, что я знаю после этого, заключается в том, что проблема связана с темами Kubuntu: если я изменю тему GTK от 'oxygen-gtk' до 'default' (в конфигурации GTK), это единственный способ, код работает хорошо, но это не идея, и кнопка выглядит ужасно.
Итак, вопросы:
- Почему я не могу изменить цвет фона кнопки?
- Почему у меня эта проблема только с кнопками? (Хорошо работает с другими виджетами)
- Я получаю ответы здесь и на форумах GTK, говорящих, что это не очень хорошая практика для изменения цветов кнопок, но ... Что делать, если мне нужно меню, подобное изображению на этом изображении (link) (см. кнопки красных кнопок)? Для вас это лучший практик?
Спасибо и приветствую!
Спасибо за помощь! Итак, если это довольно грубая идея, как разработчики делают, когда хотят создать персонализированный графический интерфейс? Лучше всего использовать GTK3, чтобы создать меню, подобное этому [link] (http://c.fsdn.com/con/app/proj/scrmopenerp/screenshots/ProjetatyScrmOpenerp_2.png)? (см. кнопки в красном поле) –