2009-08-06 11 views
5

Jak to zrobić? Wiele stron mówi, że mogę po prostu wywołać funkcję .modify_bg() na przycisku, ale to nic nie da. Jestem w stanie dodać EventBox do przycisku i dodać do niego etykietę, a następnie zmienić jej kolory, ale wygląda przerażająco - jest mnóstwo szarej przestrzeni między krawędzią przycisku, która się nie zmienia. Chcę tylko coś, co wygląda tak:GTK: utwórz kolorowy zwykły przycisk.

img http://www.kksou.com/php-gtk2/gif/0023.gif

Witryna twierdzi, że właśnie odbywa modify_bg() przycisku. Ale to nie działa dla mnie. . = (

Prawo odpowiedź prawdopodobnie wiąże tworząc styl, albo coś z plikiem gtkrc, itd. Czy ktoś może wskazać mi w tym kierunku

+0

dlaczego miałby Twórcy GTK sprawiają, że tak trudno zrobić tak prostą rzecz, mają nawet funkcję o nazwie modify_bg, nic nie robię, próbowałem to zrobić przez jakieś 2 godziny teraz, – Claudiu

Odpowiedz

16

Oto mały przykład:

import gtk 

win = gtk.Window() 
win.connect("destroy", gtk.main_quit) 

btn = gtk.Button("test") 

#make a gdk.color for red 
map = btn.get_colormap() 
color = map.alloc_color("red") 

#copy the current style and replace the background 
style = btn.get_style().copy() 
style.bg[gtk.STATE_NORMAL] = color 

#set the button's style to the one you created 
btn.set_style(style) 

win.add(btn) 
win.show_all() 

gtk.main() 
+0

ooh wreszcie. działa, widziałem przykład taki jak ten, ale na stronie internetowej zobaczyłem to na powiedziane, że .modify_bg został wymyślony, aby uniknąć konieczności robienia rzeczy takich jak ten. dzięki !! – Claudiu

+0

Chciałbym móc cię powtórzyć więcej niż raz. – Claudiu

+0

+1 Przetestowano ekwiwalent C++ tego kodu i zadziałało. –