2010-02-02 10 views
12
self.button = gtk.Button(stock=gtk.STOCK_DELETE) 

Nur Shows: Lager Icons nicht auf Tasten gezeigt

löschen
+0

Diese Antwort könnte Ihnen helfen: http://stackoverflow.com/questions/1734914/in-gtk-how-do- i-make-a-button-mit-nur-ein-lager-icon – Trent

Antwort

9

Dies ist eine aktuelle Änderung in GTK - die Entwickler wollten Symbole nicht auf Schaltflächen angezeigt werden. Unter Linux kann dies durch die Bearbeitung der geändert werden gconf Schlüssel

/desktop/gnome/interface/buttons_have_icons 

auf Fenster, denke ich (ich habe nicht wirklich versucht), dass Sie einen Wert in Ihrer gtkrc Datei gesetzt (für mich ist es in C:\Program Files\Gtk+\etc\gtkrc) und verwenden Sie ein Thema, das Symbole unterstützt (ich denke, das Standard-Symbol nicht).

Sie auch gtk-button-images = 1 auf Ihre ~/.gtkrc-2.0 Datei nach Einstellung des Themas hinzufügen können, die über die Möglichkeit von gconf fahren kann.

EDIT in Antwort auf Ihren Kommentar:

Genau wie diese Antwort, aber in Python: In Gtk, how do I make a Button with just a stock icon?

für Python, dann ist es

nur
image = gtk.Image() 
# (from http://www.pygtk.org/docs/pygtk/gtk-stock-items.html) 
image.set_from_stock(gtk.STOCK_**) 
button = gtk.Button() 
button.set_image(image) 
button.set_label("") 
+0

Danke für die schnelle Antwort. Wissen Sie, wie Sie den Textteil von Symbolen von Schaltflächen entfernen können? – aberkowitz

+0

Ich habe Ihren Kommentar in der Bearbeitung beantwortet - es ist im Grunde wie die Frage, die Trent im Kommentar zu Ihrer ursprünglichen Frage gepostet hat. –

+0

@DanielG Welchen Wert müssen Sie in Windows ändern? – techno

2

ich das tun musste, bekommen Es funktioniert von Python, ohne meine Konfigurationsdatei zu ändern. Als ich set_image() anrief, wurde kein Bild angezeigt.

image = gtk.Image() 
image.set_from_stock(gtk.STOCK_**, gtk.ICON_SIZE_BUTTON) 
button = gtk.Button() 
button.add(image) 
button.show() 
1

Ich hatte das gleiche Problem in GTKmm unter Windows. Das "MS-Windows" -Thema deaktiviert Bilder auf Standardschaltflächen und das Thema hat Vorrang vor den Einstellungen in gtkrc (daher half es nicht, gtk-button-images = true in gtkrc zu verwenden). Was ich getan habe, ist die Laufzeit der GTK-Einstellungen zu ändern, und die Bilder erschienen wie erwartet. :) Hier ist der Code in C++:

Es sollte platziert werden, nachdem das erste Fenster aufgebaut ist.

14

Der Python entspricht die Eigenschaft für die Einstellung ohne System-Konfigurationsdateien ändern zu müssen ist:

settings = gtk.settings_get_default() 
settings.props.gtk_button_images = True 

Dieser Anruf folgen sollte window.show() und, natürlich, geht den Gtk.main() Schleife.

+1

Wenn jemand versucht, dies in C zu tun, 'GtkSettings * settings = gtk_settings_get_default(); g_object_set (settings, "gtk-button-images", WAHR, NULL); 'ist die äquivalente Prozedur. – Fraxtil

-1

Sie können das Bild der Schaltfläche explizit anzeigen. Gtk + -Entwickler empfehlen dies nicht, da es die Gtk + -Benutzerkonfiguration außer Kraft setzt.

So ...

button.get_image().show() 
2

Wenn Sie mit pygobject arbeiten, die neue Syntax:

image.set_from_stock(gtk.STOCK_**, Gtk.IconSize.BUTTON) 
+0

Ich musste gtk.ICON_SIZE_BUTTON verwenden – jsj

0

in Gtk3 gtk.STOCK Methode deprecated from v3.10 gewesen.

Veraltet seit Version 3.10: Verwenden Sie stattdessen Gtk.Button.new_with_label() .

Im Fall ist es nicht, da es verweist auf die individuelle Label-Lösung hilft (new_with_label) Wenn Sie STOCK Material verwenden möchten, können Sie noch tun, also mit neuen Methoden Gtk.Button.new_from_icon_name(icon_name, size) und Gtk.Button.new_with_mnemonic(label) die neue Schaltflächen mit Lager schaffen Symbol bzw. Label.

Beispiel neue Schaltfläche mit einem "Lager" Symbol:

button = Gtk.Button.new_from_icon_name ("edit-paste", Gtk.IconSize.SMALL_TOOLBAR) 

Beispiel neue Schaltfläche mit einem "Lager" Label:

button = Gtk.Button.new_with_mnemonic("_Open") 

HINWEIS: auf ernsthaften Code eine Konstante zu schaffen Variable, anstatt die Zeichenfolge gerade zu verwenden, ist eine bessere Option :)

Referenzen: