Bilder als Buttons mit pyGTK

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Beni
User
Beiträge: 7
Registriert: Montag 18. Oktober 2004, 21:04
Kontaktdaten:

Hallo,

für eine Software möchte ich eine GUI gestalten, die etwas mehr "eyecandy" ist als der Standard-Look von GTK. Ich möchte Bilder als Buttons in mein Programm integrieren. Was ist hierfür die einfachte Möglichkeit?

Ich habe es bisher hinbekommen, dass ein gtk.Image in einen Button gepackt wird. Allerdings wird dann die Standard-Farbe des GTK-Themes benutzt, um den Button "aufzufüllen". Das sieht dann so aus:

Bild

Was ich aber möchte ist, dass wirklich nur das Bild angezeigt wird (also quasi, dass um den "Kreis" herum das Hintergrundbild sichtbar ist).
Gibt es eine Möglichkeit, das hinzubekommen? Oder gibt es gar eine ganz andere Möglichkeit, Bilder in ein Fenster einzufügen und eine Methode aufzurufen, sobald eines davon angeklickt wird?

Vielen Dank & viele Grüße!

Beni
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beni hat geschrieben:für eine Software möchte ich eine GUI gestalten, die etwas mehr "eyecandy" ist als der Standard-Look von GTK.
Unter Unices ist es etwas anders als unter Windows, aber in aller Regel sind Linux-User genervt, wenn irgendein ach so tolles Programm sich rausnehmen muss, Skins zu verwenden. Dafür gibt es in GTK+ Themes.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

button.set_relief(gtk.RELIEF_NONE)
Dann bist du den Rand los.
Ansonsten kannst du natürlich auch das Image als Button "missbrauchen" und dich da ans button-press-event o.ä hängen. Falls das Image keine Event feuern sollte (weiss ich nicht auswendig :/) kannst du es einfach in eine EventBox packen ;)
Leonidas hat geschrieben:
Beni hat geschrieben:für eine Software möchte ich eine GUI gestalten, die etwas mehr "eyecandy" ist als der Standard-Look von GTK.
Unter Unices ist es etwas anders als unter Windows, aber in aller Regel sind Linux-User genervt, wenn irgendein ach so tolles Programm sich rausnehmen muss, Skins zu verwenden. Dafür gibt es in GTK+ Themes.
Ich denke den Rand eines Buttons zu entfernen liegt durchaus noch drin. Und das wird ja auch von einigen Gnome/GTK Anwendungen gemacht. The Gimp zum Beispiel. ;)

Gruss,
Jonas.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Es geht nicht um den Rand des Buttons sondern das wirklich nur die runde Grafik angezeigt wird, also ein rundes Fenster und kein eckiges.
Beni
User
Beiträge: 7
Registriert: Montag 18. Oktober 2004, 21:04
Kontaktdaten:

Guten Morgen,

vielen Dank für die Antworten!
BlackJack hat geschrieben:Es geht nicht um den Rand des Buttons sondern das wirklich nur die runde Grafik angezeigt wird, also ein rundes Fenster und kein eckiges.
Genau. So war das gemeint ;-)
Leonidas hat geschrieben:Unter Unices ist es etwas anders als unter Windows, aber in aller Regel sind Linux-User genervt, wenn irgendein ach so tolles Programm sich rausnehmen muss, Skins zu verwenden. Dafür gibt es in GTK+ Themes.
Ja, das ist mir durchaus bewusst. Bin selbst seit Jahren Linux-Benutzer. Allerdings möchte ich eine Art GUI im Stile von MythTV oder Ähnlichem erstellen. Es geht dabei auch um eine Art "Media-Center". Meine "Zielgruppe" möchte also mit Sicherheit eine GUI, die etwas aus dem Rahmen fällt.
veers hat geschrieben:

Code: Alles auswählen

button.set_relief(gtk.RELIEF_NONE)
Dann bist du den Rand los.
Danke für den Tipp. Das wäre nämlich meine nächste Frage gewesen ;-)
veers hat geschrieben: Ansonsten kannst du natürlich auch das Image als Button "missbrauchen" und dich da ans button-press-event o.ä hängen.
Hm...kannst Du mir vielleicht ein kurzes Beispiel geben, wie sowas aussehen könnte?

Viele Grüße

Beni
Chrispy
User
Beiträge: 37
Registriert: Montag 10. September 2007, 22:43

Code: Alles auswählen

button.set_image()
damit kannst du das bild auswählen.

Mit Glade kann man Buttons als Container benutzen und ein Bild hineinsetzen, wie das ohne Glade geht, weiss ich leider nicht.
Antworten