5 votes

Comment rendre l'entrée d'un Gtk.ComboBoxText modifiable dans Glade

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 ?

9voto

gabr Points 20458

Essayez de régler can_focus à True, si vous ne pouvez pas donner le focus clavier à l'entrée, vous ne pourrez pas taper quoi que ce soit dedans.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X