Como eu posso chamar programaticamente o teclado na tela do Ubuntu em gtk / python?

4

Estou programando minhas interfaces usando o gtk python e exibindo-as na tela do Udoo Neo sem ter um teclado físico.

Eu quero que o teclado seja exibido sempre que eu tiver um campo a ser preenchido. No entanto, eu não quero usar a biblioteca Tkinter.

Existe uma maneira fácil de ter um teclado na tela?

    
por Arwa Moath 12.04.2017 / 13:42

1 resposta

4

Chamando o teclado onboard no foco de um campo

Você pode chamar qualquer comando no focus in / out usando:

field.connect('focus-in-event', self.focus_in)

ou:

field.connect('focus-out-event', self.focus_out)

onde focus_in() e focus_out() são suas funções, chamadas em foco para dentro ou para fora.

Um exemplo

#!/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()

No exemplo acima, o teclado na tela será chamado se o campo "campo de teste" for focalizado, em foco fora (ou focando no "outro campo"), o teclado na tela desaparecerá.

Chame o teclado em foco

Fecheotecladoemfoco

Nota

O teclado onboard possui várias opções, como layout, posição, aprendizado de log, tamanho etc. Consulte man onboard

    
por Jacob Vlijm 14.04.2017 / 07:10