Je programme mes interfaces avec gtk python et les affiche sur l'écran Udoo Neo sans clavier physique.
Je veux que le clavier soit affiché chaque fois que j'ai un champ à remplir. Cependant, je ne veux pas utiliser la bibliothèque Tkinter.
Existe-t-il un moyen simple d’avoir un clavier à l’écran?
Vous pouvez appeler n’importe quelle commande sur focus in/out en utilisant:
field.connect('focus-in-event', self.focus_in)
ou:
field.connect('focus-out-event', self.focus_out)
où focus_in()
et focus_out()
sont vos fonctions, appelées mises au point en entrée ou en sortie.
#!/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 __== "__main__":
CallKeyboardTest()
Dans l'exemple ci-dessus, le clavier à l'écran sera appelé si le champ "testfield" est focalisé, sur le focus (ou sur le "autre champ"), le clavier à l'écran disparaîtra.
Appelle le clavier actif
Ferme le clavier lors de la mise au point
Le clavier intégré dispose d’un certain nombre d’options, telles que la disposition, la position, l’apprentissage du journal, la taille, etc. Voir man onboard