Как программно вызывать Ubuntu на экранной клавиатуре в gtk / python?

У меня старая машина XP с 256 МБ, и я использую XFCE, поэтому Xubuntu, вероятно, будет вашим лучшим вариантом.

4
задан 14 April 2017 в 08:27

4 ответа

Вызов бортовой клавиатуры при фокусировке поля

Вы можете вызвать любую команду для включения / выключения фокуса, используя:

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» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.

Вызовите клавиатуру на фокусе

Вызовите клавиатуру на фокус

Примечание

Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]

4
ответ дан 22 May 2018 в 23:43
  • 1
    Он работал на моем ноутбуке ubuntu, однако на моем экране Udoo Neo он не делает + он вызывает ошибку дочернего исключения – Arwa Moath 15 April 2017 в 11:26
  • 2
    @ArwaMoath Пожалуйста, разместите точное и полное сообщение об ошибке. – Jacob Vlijm 15 April 2017 в 11:35
  • 3
    [] Traceback (последний последний вызов): Файл " /home/udooer/Desktop/SaedRobot/ScanTape.py" ;, строка 58, в подпроцессе focus_in.Popen (" onboard ") Файл " / usr / lib / python2 .7 / subprocess.py ", строка 710, в init errread, errwrite) Файл" /usr/lib/python2.7/subprocess.py" ;, строка 1327, в _execute_child raise child_exception OSError: [Errno 2] Нет такого файла или каталога – Arwa Moath 15 April 2017 в 11:51
  • 4
    @ArwaMoath код - python3. Запустите его с помощью python3 /path/to/script.py, но он может быть изменен для работы на python2. Кстати, это на Ubuntu? – Jacob Vlijm 15 April 2017 в 11:55
  • 5
    Как я могу изменить его для запуска на python 2.7, да его ubuntu – Arwa Moath 15 April 2017 в 11:57

Вызов бортовой клавиатуры при фокусировке поля

Вы можете вызвать любую команду для включения / выключения фокуса, используя:

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» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.

Вызовите клавиатуру на фокусе

Вызовите клавиатуру на фокус

Примечание

Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]

4
ответ дан 18 July 2018 в 15:07

Вызов бортовой клавиатуры при фокусировке поля

Вы можете вызвать любую команду для включения / выключения фокуса, используя:

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» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.

Вызовите клавиатуру на фокусе

Вызовите клавиатуру на фокус

Примечание

Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]

4
ответ дан 24 July 2018 в 20:33

Вызов бортовой клавиатуры при фокусировке поля

Вы можете вызвать любую команду для включения / выключения фокуса, используя:

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» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.

Вызовите клавиатуру на фокусе

Вызовите клавиатуру на фокус

Примечание

Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]

4
ответ дан 31 July 2018 в 23:35

Другие вопросы по тегам:

Похожие вопросы: