Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/135: Рейтинг темы: голосов - 135, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 01.08.2015
Сообщений: 10

Pyautogui не выводит буквы

24.10.2016, 02:36. Показов 27297. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
при использовании функций pyautogui (typewrite, press) не выводятся английские буквы. То есть, например, при выполнении
Python
1
pyautogui.typewrite(u"https://gabrielecirulli.github.io/2048", interval = 0.2)
будет выведено
://../2048

при этом буквы не выводятся, но 0.2 с ожидания на вывод буквы проходят (надеюсь, понятно сказал), при вбивании в google нашло ошибку (https://github.com/asweigart/pyautogui/issues/46), т. е. работает только при английской раскладке (не eng-rus).


Поэтому вопрос: возможно ли как-то временно изменить раскладку клавиатуры (только при запуске программы) или есть ли какая-то простая альтернатива для
Python
1
pyautogui.typewrite(u"https://gabrielecirulli.github.io/2048", interval = 0.2)
?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2016, 02:36
Ответы с готовыми решениями:

Ошибка ModuleNotFoundError: No module named 'pyautogui' при импорте pyautogui
Все установлено, но при импорте модуля выдает ошибку. С чем это может быть связано? pip install pyautogui Requirement already...

Аналог pyautogui или как выбрать процесс pyautogui
вопрос в шапке помогите информацией

Ошибка ModuleNotFoundError: No module named 'pyautogui' при импорте pyautogui
Проблема решена Забыл указать решение(WINDOWS 10): Проверьте через какой путь запускается ваш скрипт вот так: import sys ...

7
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
24.10.2016, 16:55
Раскладку изменить тем же pyautogui просто
Python
1
pyautogui.hotkey('alt', 'shift')
другое дело, что это не поможет.

Из подобных pyautogui токмо pywinauto знаком мне, и оно работает
Python
1
2
3
>>> import pywinauto
>>> pywinauto.SendKeysCtypes.SendKeys(r'https://gabrielecirulli.github.io/2048', pause=0.1, with_spaces=True)
[url]https://gabrielecirulli.github.io/2048[/url]
0
1 / 1 / 0
Регистрация: 17.01.2018
Сообщений: 1
17.01.2018, 16:51
У самого была такая проблема, решилась, когда поменял системный язык по умолчанию
Миниатюры
Pyautogui не выводит буквы  
1
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
17.01.2018, 18:37
Если системный язык - русский, а напечатать нужно латиницу, раскладку менять необходимо дважды: для потока питонячьего скрипта и для окна в которое собираетесь втыкнуть латинское безобразие (с русского на английский, конечно).

Вертаю долг. Бессмысленный, правда
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import ctypes
import ctypes.wintypes as wintypes
 
from ctypes import POINTER
 
 
GetKeyboardLayout = ctypes.windll.user32.GetKeyboardLayout
GetKeyboardLayout.argtypes = (wintypes.DWORD,)
GetKeyboardLayout.restype = wintypes.HKL
 
GetKeyboardLayoutList = ctypes.windll.user32.GetKeyboardLayoutList
GetKeyboardLayoutList.argtypes = (ctypes.c_int, POINTER(wintypes.HKL))
GetKeyboardLayoutList.restype = wintypes.UINT
 
ActivateKeyboardLayout = ctypes.windll.user32.ActivateKeyboardLayout
ActivateKeyboardLayout.argtypes = (wintypes.HKL, wintypes.UINT)
ActivateKeyboardLayout.restype = wintypes.HKL
 
 
def switch_layout(langid):
    if GetKeyboardLayout(0) & 0x3ff == langid:
        return
    
    size = GetKeyboardLayoutList(0, None)
    if size > 1:
        lplist = (wintypes.HKL * size)()
        GetKeyboardLayoutList(size, lplist)
        for hkl in lplist:
            if hkl & 0x3ff == langid:
                ActivateKeyboardLayout(hkl, 0)
                return
    else:
        raise ValueError()
 
 
# ctypes.windll.user32.PostMessageW(ctypes.windll.user32.GetForegroundWindow(),0x0050, 2, 68748313)  # ru_ru
ctypes.windll.user32.PostMessageW(ctypes.windll.user32.GetForegroundWindow(), 0x0050, 2, 67699721)  # en_us
 
# !! переключаем раскладку до импорта pyautogui, иначе fail
switch_layout(9)  # en
 
 
import pyautogui
 
pyautogui.typewrite(r"https://gabrielecirulli.github.io/2048", interval = 0.2)
(модуль pyautogui использует устаревшую не юникодную keybd_event и несколько коряво, и даже, пожалуй, неуместно VkKeyScanA)
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.12.2019, 21:53
На СтакОверфлоу написано
typewrite() - это симуляция нажатия клавиш. Библиотека знает только клавиши на английском языке. Документация Соответственно выход: написать функцию, которая переведет строку на русском в английскую раскладку клавиатуры и вернет полученное как аргумент typewrite(). Дальше следите, чтобы в том поле, куда выводятся нажатия, стоял СИСТЕМНЫЙ русский язык
0
0 / 0 / 0
Регистрация: 16.05.2020
Сообщений: 1
16.05.2020, 16:52
У меня почему то наоборот, английский язык работает, только тогда когда включена английская раскладка, и русский язык никак не хочет вводить, что делать?
0
1 / 1 / 0
Регистрация: 10.02.2022
Сообщений: 1
11.08.2022, 12:41
Цитата Сообщение от shsv Посмотреть сообщение
Если системный язык - русский, а напечатать нужно латиницу, раскладку менять необходимо дважды: для потока питонячьего скрипта и для окна в которое собираетесь втыкнуть латинское безобразие (с русского на английский, конечно).

Вертаю долг. Бессмысленный, правда
Python
1
2
# !! переключаем раскладку до импорта pyautogui, иначе fail
switch_layout(9)  # en
(модуль pyautogui использует устаревшую не юникодную keybd_event и несколько коряво, и даже, пожалуй, неуместно VkKeyScanA)
Добрый день!
Меня спасает код с функцией "switch_layout(9)". Спасибо автору!
Если кто знает, подскажите, с каким кодом в этой функции включается русская раскладка? Метод перебора не помог.
1
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10
26.10.2022, 19:22
36 строчку кода раскомментируешь, 37 закомментируешь, это и будет русская раскладка.
ctypes.windll.user32.PostMessageW(ctypes .windll.user32.GetForegroundWindow(),0x0 050, 2, 68748313) # ru_ru

Добавлено через 2 минуты
Вообще код очень интересно работает, я в итоге получил русский текст но совсем не тот, который ожидал изначально и тут до меня доперло как он работает))

# Pyautogui не выводит буквы
import ctypes
import ctypes.wintypes as wintypes

from ctypes import POINTER


GetKeyboardLayout = ctypes.windll.user32.GetKeyboardLayout
GetKeyboardLayout.argtypes = (wintypes.DWORD,)
GetKeyboardLayout.restype = wintypes.HKL

GetKeyboardLayoutList = ctypes.windll.user32.GetKeyboardLayoutLi st
GetKeyboardLayoutList.argtypes = (ctypes.c_int, POINTER(wintypes.HKL))
GetKeyboardLayoutList.restype = wintypes.UINT

ActivateKeyboardLayout = ctypes.windll.user32.ActivateKeyboardLay out
ActivateKeyboardLayout.argtypes = (wintypes.HKL, wintypes.UINT)
ActivateKeyboardLayout.restype = wintypes.HKL


def switch_layout(langid):
if GetKeyboardLayout(0) & 0x3ff == langid:
return

size = GetKeyboardLayoutList(0, None)
if size > 1:
lplist = (wintypes.HKL * size)()
GetKeyboardLayoutList(size, lplist)
for hkl in lplist:
if hkl & 0x3ff == langid:
ActivateKeyboardLayout(hkl, 0)
return
else:
raise ValueError()


ctypes.windll.user32.PostMessageW(ctypes .windll.user32.GetForegroundWindow(),0x0 050, 2, 68748313) # ru_ru
#ctypes.windll.user32.PostMessageW(ctype s.windll.user32.GetForegroundWindow(), 0x0050, 2, 67699721) # en_us

# !! переключаем раскладку до импорта pyautogui, иначе fail
#switch_layout(2) # en

import pyautogui
pyautogui.typewrite(r"t,fnm-rjgfnm Дима", interval = 0.2)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2022, 19:22
Помогаю со студенческими работами здесь

Pyautogui можно ли сделать так чтобы печатались английские буквы на русской раскладке
Использую pyautogui . Проблема в том, что мне нужно открыть приложение и потом вписать английские буквы, вот только проблема в семёрке, она...

Предложение содержит буквы латинского и русского алфавитов. Написать программу, которая выводит буквы только л
Предложение содержит буквы латинского и русского алфавитов. Написать программу, которая выводит буквы только латинского алфавита в порядке...

Предложение содержит буквы латинского и русского алфавитов. Написать программу, которая выводит буквы только русского ал
Предложение содержит буквы латинского и русского алфавитов. Написать программу, которая выводит буквы только русского алфавита в порядке их...

C++ не выводит русские буквы
#include <stdio.h> #include <math.h> #include <clocale> int main() { float a, b, c; float x, F; ...

Не выводит русские буквы
Вот нашел проэкт, он просто срочно нужен мне на курсовую. Это кейлогер с сервером. Вот я не знаю как сделать что бы он выводил русские...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru