J'utilise Glade pour écrire une application PyGI et j'ai rencontré un problème qui me permettait d'avoir un Gtk.ComboBoxText avec un Gtk.Entry, mais je ne peux pas rendre l'entrée modifiable pour une raison quelconque. C'est à dire. lorsque l'interface utilisateur est chargée, il n'y a aucun moyen de saisir du texte.
J'ai examiné toutes les propriétés de l'entrée et également celles du parent comboboxtext, mais je n'ai rien trouvé qui me manque. Curieusement, si je le crée uniquement avec du code (c'est-à-dire sans fichiers Glade .ui
), cela semble fonctionner et l'entrée est modifiable.
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>
#!/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()
Des indications sur la manière de rendre la saisie de texte modifiable dans le code Glade?
Essayez de régler can_focus
sur True. Si vous ne pouvez pas activer le clavier, vous ne pourrez rien saisir.