2017-08-22 1 views
1

J'ai un Gtk.LinkButton et je veux changer son étiquette par programme pendant l'exécution du programme que j'écris. J'ai découvert que je peux changer l'étiquette en éditant manuellement le fichier .glade. Comment puis-je le modifier par programme? J'utilise Python 2.7.13 et GTK + 3.22 à l'intérieur jusqu'à ce jour MSYS2 et à jour de Windows 10.Comment définir l'étiquette d'un Gtk.LinkButton dans Glade ou dans le code après avoir créé le bouton dans Glade, sans modifier manuellement le fichier .glade?

example.py:

# coding=utf-8 

import gi 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk 

b = Gtk.Builder() 
b.add_from_file("test.glade") 

w = b.get_object("window1") 
linkButton = b.get_object("linkButton") 
linkButton.label = "Google" # This does nothing. 

w.connect("delete-event", Gtk.main_quit) 
w.show_all() 
Gtk.main() 

test.glade:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.20.0 --> 
<interface> 
    <requires lib="gtk+" version="3.20"/> 
    <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkLinkButton" id="linkButton"> 
     <property name="label" translatable="yes">button</property> 
     <property name="visible">True</property> 
     <property name="can_focus">True</property> 
     <property name="receives_default">True</property> 
     <property name="relief">none</property> 
     <property name="uri">http://www.google.com</property> 
     </object> 
    </child> 
    </object> 
</interface> 

Screenshot :

Screenshot

Répondre

1

Depuis Gtk.LinkButton classe parente est Gtk.Button vous pouvez utiliser Gtk.Button méthode set_label pour définir l'étiquette du bouton:

... 
w = b.get_object("window1") 
linkButton = b.get_object("linkButton") 
linkButton.set_label("Google") # This does something 
... 

PS: propriétés GObject sont encapsulées dans <object>.props.<property>, donc, de mettre l'étiquette en utilisant la même approche que la question fait, on devrait faire:

linkButton.props.label = "Google" # This also does something