Как сделать запись Gtk.ComboBoxText редактируемой в Glade
Я использую Glade для написания приложения PyGI и столкнулся с проблемой, из-за которой у меня есть Gtk.ComboBoxText с Gtk.Entry, но я не могу сделать запись редактируемой по какой-то причине. Т.е. когда пользовательский интерфейс загружен, в него нельзя вводить текст.
Я просмотрел все свойства записи, а также свойства родительского элемента comboboxtext, но не смог найти ничего очевидного, что мне не хватает. Как ни странно, если я создаю его только с кодом (т.е. без Glade .ui
файлы), который, кажется, работает, и запись затем редактируется.
Этот код не работает
Код:
#!/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()
Glade file:
<?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()
Любые указатели о том, как сделать текстовую запись редактируемой в коде Glade?
1 ответ
Попробуйте установить can_focus
в True, если вы не можете выделить клавиатуру для ввода, вы не сможете ничего в нее ввести.