web-dev-qa-db-fra.com

Comment rendre une entrée de Gtk.ComboBoxText modifiable dans Glade

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.

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()

Des indications sur la manière de rendre la saisie de texte modifiable dans le code Glade?

5
David Planella

Essayez de régler can_focus sur True. Si vous ne pouvez pas activer le clavier, vous ne pourrez rien saisir.

9
mhall119