J'utilise Glade pour écrire une application PyGI, et je suis tombé sur un problème où j'ai une Gtk.ComboBoxText avec une Gtk.Entry, mais je ne peux pas rendre l'entrée éditable pour une raison quelconque. C'est-à-dire que lorsque l'interface utilisateur est chargée, il n'y a aucun moyen d'y saisir du texte.
J'ai examiné toutes les propriétés de l'entrée et celles du parent comboboxtext, mais je n'ai rien trouvé d'évident qui me manque. Curieusement, si je le crée uniquement avec du code (c'est-à-dire sans Glade .ui
), cela semble fonctionner et l'entrée est alors modifiable.
Ce code ne fonctionne pas
Code :
#!/usr/bin/env python
from gi.repository import Gtk
class Combo:
def __init__(self):
builder = Gtk.Builder()
builder.add_from_file('combo.ui')
window = builder.get_object('window1')
window.connect('destroy', lambda w: Gtk.main_quit())
window.show_all()
Combo()
Gtk.main()
Fichier Glade :
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
<object class="GtkComboBoxText" id="comboboxtext1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_entry">True</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<child internal-child="entry">
<object class="GtkEntry" id="comboboxtext-entry">
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
</object>
</interface>
Ce code fonctionne
#!/usr/bin/env python
from gi.repository import Gtk
class Combo:
def __init__(self):
window = Gtk.Window()
window.set_default_size(200, 200)
combo = Gtk.ComboBoxText.new_with_entry()
combo.set_hexpand(True)
window.connect("destroy", lambda w: Gtk.main_quit())
window.add(combo)
window.show_all()
Combo()
Gtk.main()
Avez-vous des indications sur la façon de rendre l'entrée de texte modifiable dans le code Glade ?