Я программирую свои интерфейсы с помощью gtk Python и отображая их на экране Udoo Neo, не имея физической клавиатуры.
Я хочу, чтобы клавиатура была отображена каждый раз, когда у меня есть поле, чтобы быть заполненным. Однако я не хочу пользоваться библиотекой Tkinter.
Существует ли простой способ иметь клавиатуру на экране?
Можно назвать любую команду на фокусе в / при помощи:
field.connect('focus-in-event', self.focus_in)
или:
field.connect('focus-out-event', self.focus_out)
где focus_in()
и focus_out()
Ваши функции, обратился к фокусу в или.
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import signal
import subprocess
class CallKeyboardTest:
def __init__(self):
# window definition
window = Gtk.Window(title="Test 123")
window.connect('destroy', Gtk.main_quit)
# maingrid
maingrid = Gtk.Grid()
maingrid.set_border_width(12)
window.add(maingrid)
# two different fields, one is calling the keyboard, the other isn't
testfield = Gtk.Entry()
testfield.connect('focus-in-event', self.focus_in)
testfield.connect('focus-out-event', self.focus_out)
otherfield = Gtk.Entry()
maingrid.attach(testfield, 0, 0, 1, 1)
maingrid.attach(otherfield, 0, 1, 1, 1)
window.show_all()
Gtk.main()
def focus_out(self, entry, event):
subprocess.Popen(["pkill", "onboard"])
def focus_in(self, entry, event):
subprocess.Popen("onboard")
def stop_prefs(self, *args):
Gtk.main_quit()
if __name__ == "__main__":
CallKeyboardTest()
На примере выше, на экранной клавиатуре будет назван, если поле "testfield" будет сфокусировано на фокусе (или фокусирующийся на "otherfield"), то на экранной клавиатуре исчезнет.
Назовите клавиатуру на фокусе
Закройте клавиатуру на фокусе
Встроенная клавиатура имеет много опций, как расположение, положение, изучение журнала, размер и т.д. Посмотрите man onboard