PyGtk: Изменить цвет фона / изображение gtk FileChooserButton - PullRequest
0 голосов
/ 05 сентября 2011

Я попытался изменить цвет фона для кнопки Filechooser, но ничего не изменилось.

gtkrc file:

style "FilechooserButtonStyle" = "button_style"
{
 base[NORMAL] = '#F5F5F5'
 base[SELECTED] = 'red'
 bg[NORMAL] = 'green'
 bg_pixmap[NORMAL] = "button.jpg"

 xthickness = 10
 ythickness = 10
 GtkFileChooserButton::set_app_paintable = True

}

В файле py:

file_chooser.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("red"))
file_chooser.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color('gray'))

Как я мог решить проблему?

Заранее спасибо!

1 Ответ

1 голос
/ 05 сентября 2011

Я не очень знаком с файлами .rc, но это работает в коде:

#!/usr/bin/env python
# example filechooser.py

import pygtk
pygtk.require('2.0')

import gtk

dialog = gtk.FileChooserDialog("Open..", None,
                           gtk.FILE_CHOOSER_ACTION_OPEN,
                           (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                            gtk.STOCK_OPEN, gtk.RESPONSE_OK))
dialog.set_default_response(gtk.RESPONSE_OK)


##      here it is
##
for child in dialog.get_children():
    for enf in child.get_children():
    if isinstance(enf, gtk.HButtonBox):
        for butt in enf.get_children():
            style = butt.get_style().copy ()
            style.bg[gtk.STATE_NORMAL] = butt.get_colormap().alloc (0xffff, 0x0000, 0x0000)
            butt.set_style (style)
##

response = dialog.run()
if response == gtk.RESPONSE_OK:
    print dialog.get_filename(), 'selected'
elif response == gtk.RESPONSE_CANCEL:
    print 'Closed, no files selected'
dialog.destroy()

Он выполняет поиск во всех дочерних элементах диалога, чтобы найти кнопки и изменить их стиль на красный.Надеюсь, это помогло вам!

...