python - Использовать новую созданную оболочку и отправлять ей команды [duplicate]

Попробуйте:

var funcs = [];

for (var i = 0; i < 3; i++) {
    funcs[i] = (function(index) {
        return function() {
            console.log("My value: " + index);
        };
    }(i));
}
for (var j = 0; j < 3; j++) {
    funcs[j]();
}

Изменить (2014):

Лично я думаю, что более поздний ответ @ Aust об использовании .bind - лучший способ сделать это сейчас. Также есть _.partial lo-dash / underscore, когда вам не нужно или хотите взаимодействовать с bind thisArg.

15
задан James Vickery 10 June 2016 в 12:04
поделиться

5 ответов

Хотя это специфично для X, вы можете установить пакет xautomation (apt-get install xautomation в системах на базе Debian) и использовать xte для имитации нажатия клавиш, например ::

from subprocess import Popen, PIPE

control_f4_sequence = '''keydown Control_L
key F4
keyup Control_L
'''

shift_a_sequence = '''keydown Shift_L
key A
keyup Shift_L
'''

def keypress(sequence):
    p = Popen(['xte'], stdin=PIPE)
    p.communicate(input=sequence)

keypress(shift_a_sequence)
keypress(control_f4_sequence)
13
ответ дан Mark Longair 25 August 2018 в 16:54
поделиться

Если вы находитесь в Windows, используйте Sendkeys , и если в Linux попробуйте указать здесь для xsendkeys или pexpect.

1
ответ дан Community 25 August 2018 в 16:54
поделиться

Рассмотрим python-uinput и evdev . Пример shift+a с последним:

from evdev import uinput, ecodes as e

with uinput.UInput() as ui:
    ui.write(e.EV_KEY, e.KEY_LEFTSHIFT, 1)
    ui.write(e.EV_KEY, e.KEY_A, 1)
    ui.syn()
10
ответ дан gvalkov 25 August 2018 в 16:54
поделиться

python-uinput :

Pythonic API для Linux uinput kernel module ...

Python-uinput - это интерфейс Python для Linux uinput модуль ядра, который позволяет подключать драйверы устройств userpace к ядру. На практике Python-uinput упрощает создание виртуальных джойстиков, клавиатур и мышей для произвольного создания произвольных входных событий ...

14
ответ дан Ignacio Vazquez-Abrams 25 August 2018 в 16:54
поделиться

Если вы планируете использовать его в Linux, попробуйте библиотеку pyautogui . Для нескольких клавиш вам нужно будет использовать горячую клавишу, например:

pyautogui.hotkey('ctrl', 'c')  # ctrl-c to copy

. Для меня это сработало - см. Здесь: Как передать нажатие клавиши (ALT + TAB) с помощью Popen.communicate (в Linux )?

2
ответ дан mrjoseph 25 August 2018 в 16:54
поделиться
Другие вопросы по тегам:

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