Farbe von Widgets

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Dookie!

Ahh, sehr gut, so gehts (Frisur gerettet :D)
Vielen Dank!

Gruß, mawe
palo
User
Beiträge: 2
Registriert: Sonntag 26. November 2006, 14:41

hmm , ich hab das jetzt auch mal ausprobiert, und bei mir klappt das
alles ziemlich gut, mein einziges Problem ist, dass ich in nachhinein nicht die farben mehr aendern kann.

sowas in der art soll passieren:

Code: Alles auswählen

def click(self,event):
         print self.label
         self.set_bg_color("white")
aber wenn ich dann auf den button druecke , dann bekommt der das nicht geregelt die neue farbe einzusetzen.

waehre toll , wenn mir da jemand weiter helfen koennte
palo
User
Beiträge: 2
Registriert: Sonntag 26. November 2006, 14:41

lolz ich habs leber nach langem suchen herausgefunden :D

hat mich aber jetzt auch intensive arbeit gekostet,
hier nochmal der ganze code, ( hab aber nur in der set_bg_color) rutine was geaendert:

Code: Alles auswählen

import pygtk
pygtk.require('2.0')
import gtk

class ColoredButton(gtk.Button):
    def __init__(self, label=None, stock=None, use_underline=True,
                states=(gtk.STATE_NORMAL, gtk.STATE_PRELIGHT, gtk.STATE_ACTIVE)):
        super(ColoredButton, self).__init__(label, stock, use_underline)
        self.states = states
        self.label = label
        self.cm = self.get_colormap()
        self.connect("clicked", self.click)
      
    def click(self,event):
        print self.label
        self.set_bg_color("white")

    def set_bg_color(self, bg):
        rc_style = gtk.RcStyle()
        bgc = self.cm.alloc_color(bg)
        self.set_style(None)
        self.modify_style(rc_style)
        for state in self.states:
            self.modify_bg(state, bgc)
        self.child.set_use_markup(True)

elements = ["H","C"]
root = gtk.Window(gtk.WINDOW_TOPLEVEL)
root.connect("destroy", lambda w: gtk.main_quit())

table = gtk.Table(1,2)
root.add(table)

c,r = 0,0
for atom in elements:
    button = ColoredButton(label=atom)
    if atom == "H":
        button.set_bg_color("red")
    else:
        button.set_bg_color("blue")

    table.attach(button,c,c+1,r,r+1)
    button.show()
    c+=1
table.show()
root.show()
gtk.main()
gummibaerchen
User
Beiträge: 51
Registriert: Samstag 7. Oktober 2006, 15:13

Das letzte ist schon besser ;)

Die anderen Button sahen auch nicht nach GTK2 aus. (Keine runden Ecken und so.)

Auf jeden Fall wert, sich das hier zu bookmarken :)

Was nur vllt stört, ist, dass man trotzdem noch den Ubuntu "nativen" Glanzeffekt hat.

Ansonsten muss ich gleich mal gucken, ob Kalzium Buttons oder Drawing-Areas hat :roll:
Antworten