使用 pyautogui 输入 unicode 字符串
Input unicode string with pyautogui
我正在使用 pyautogui
库创建一个自动测试应用程序。我想使用 typewrite
方法将文本输入到表单中。但是我的一些输入字符串中有 unicode 字符。例如:
Næst
根据文档 typewrite
只能按单字符键。所以它只是忽略 æ
字符。
你能建议一些简单的解决方法吗?
找到一个很简单的。
在 Mac 和 Linux 中有机会使用十六进制代码输入 unicode 字符。关于那个有article on wikipedia。我正在为 Mac 编写程序,所以我在键盘设置中启用了 Unicode Hex Input 并编写了以下代码:
def type_unicode(word):
for c in word:
c = '%04x' % ord(c)
pyautogui.keyDown('optionleft')
pyautogui.typewrite(c)
pyautogui.keyUp('optionleft')
我知道这个帖子很旧,但为了主题的缘故,我认为我设法以更简单的方式使用 pyperclip 绕过了它。
与其尝试让 pyautogui 键入特殊字符,不如使用 pyperclip 将它们复制到剪贴板,然后使用 pyautogui 粘贴它们。例如 Windows:
import pyautogui
import pyperclip
pyperclip.copy("It's leviOsa, not lêvioçÁ!")
pyautogui.hotkey("ctrl", "v")
编辑:
我们可以让它在多个平台上工作,如下所示(感谢@karlo 指出):
import pyautogui
import pyperclip
import platform
def type(text: str):
pyperclip.copy(text)
if platform.system() == "Darwin":
pyautogui.hotkey("command", "v")
else:
pyautogui.hotkey("ctrl", "v")
type("It's leviOsa, not lêvioçÁ!")
我尝试了 trestlnord 的回答,但没有成功。我将这个想法改编为:
import pyautogui as px
def type_unicode(word):
for char in word:
num = hex(ord(char))
px.hotkey('ctrl', 'shift', 'u')
for n in num:
px.typewrite(n)
px.typewrite('\n')
在架构上工作 linux
试试 pynput
我发现输入 Unicode 文本更容易。使用 pip install pynput
或 pip3 install pynput
安装
from pynput.keyboard import Controller
keyboard = Controller()
keyboard.type("Næst")
from pynput.keyboard import Controller
import time
time.sleep(3)
Controller().type("Næst")
此代码完美运行。只需要用pip命令安装pynput即可。
我正在使用 pyautogui
库创建一个自动测试应用程序。我想使用 typewrite
方法将文本输入到表单中。但是我的一些输入字符串中有 unicode 字符。例如:
Næst
根据文档 typewrite
只能按单字符键。所以它只是忽略 æ
字符。
你能建议一些简单的解决方法吗?
找到一个很简单的。
在 Mac 和 Linux 中有机会使用十六进制代码输入 unicode 字符。关于那个有article on wikipedia。我正在为 Mac 编写程序,所以我在键盘设置中启用了 Unicode Hex Input 并编写了以下代码:
def type_unicode(word):
for c in word:
c = '%04x' % ord(c)
pyautogui.keyDown('optionleft')
pyautogui.typewrite(c)
pyautogui.keyUp('optionleft')
我知道这个帖子很旧,但为了主题的缘故,我认为我设法以更简单的方式使用 pyperclip 绕过了它。
与其尝试让 pyautogui 键入特殊字符,不如使用 pyperclip 将它们复制到剪贴板,然后使用 pyautogui 粘贴它们。例如 Windows:
import pyautogui
import pyperclip
pyperclip.copy("It's leviOsa, not lêvioçÁ!")
pyautogui.hotkey("ctrl", "v")
编辑:
我们可以让它在多个平台上工作,如下所示(感谢@karlo 指出):
import pyautogui
import pyperclip
import platform
def type(text: str):
pyperclip.copy(text)
if platform.system() == "Darwin":
pyautogui.hotkey("command", "v")
else:
pyautogui.hotkey("ctrl", "v")
type("It's leviOsa, not lêvioçÁ!")
我尝试了 trestlnord 的回答,但没有成功。我将这个想法改编为:
import pyautogui as px
def type_unicode(word):
for char in word:
num = hex(ord(char))
px.hotkey('ctrl', 'shift', 'u')
for n in num:
px.typewrite(n)
px.typewrite('\n')
在架构上工作 linux
试试 pynput
我发现输入 Unicode 文本更容易。使用 pip install pynput
或 pip3 install pynput
from pynput.keyboard import Controller
keyboard = Controller()
keyboard.type("Næst")
from pynput.keyboard import Controller
import time
time.sleep(3)
Controller().type("Næst")
此代码完美运行。只需要用pip命令安装pynput即可。