一阵三十六 发表于 2023-5-11 11:09:43

如何利用python将中英文混合的文本输入到输入框处

以下是可以输出英文到输入框的代码,但是处理不了中文:
# !/usr/bin/env python3
# _*_ coding:utf-8 _*_
"""
@File   : AutoInput.py
@Project: AutoInput
@Time   : 2023/5/10 22:15
@Author   : Gag
@Software : PyCharm
@License: (C)Copyright 2018-2028, Taogroup-NLPR-CASIA
@Last Modify Time      @Version   @Desciption
--------------------       --------      -----------
2023/5/10 22:15      1.0             None
"""
# 监听键盘以达到快捷键启动程序
import pythoncom
import PyHook3
# 用户选择文件
import tkinter as tk
from tkinter import filedialog
# 用于判断文件的编码格式
import chardet
# pip install chardet -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
# 用于模拟键盘输入
from pymouse import PyMouse
from pykeyboard import PyKeyboard
# pip install PyUserInput -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
import pypinyin
# pip install pypinyin -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
import time


# 判断当前输入的文字是否是中文
def is_chinese(word):
    for ch in word:
      if '\u4e00' <= ch <= '\u9fff':
            return True
    return False


# 判断文件编码格式
def get_encoding(file):
    with open(file, 'rb') as f:
      tmp = chardet.detect(f.read())
      return tmp['encoding']


# 监听键盘
def onKeyboardEvent(event):
    '''
    # 监听键盘事件
    print("MessageName:", event.MessageName)
    print("Message:", event.Message)
    print("Time:", event.Time)
    print("Window:", event.Window)
    print("WindowName:", event.WindowName)
    print("Ascii:", event.Ascii, chr(event.Ascii))
    print("Key:", event.Key)
    print("KeyID:", event.KeyID)
    print("ScanCode:", event.ScanCode)
    print("Extended:", event.Extended)
    print("Injected:", event.Injected)
    print("Alt", event.Alt)
    print("Transition", event.Transition)
    print("---")
    '''

    # 通过 键盘上的 Insert 按键 触发自动输入
    if event.Key == "Insert":
      # 打开文件
      # 创建对象
      root = tk.Tk()
      root.withdraw()
      # 获取文件路径
      FilePath = filedialog.askopenfilename()
      print(FilePath)
      # 获取文件编码格式
      Encoding = get_encoding(FilePath)
      print("%s的文件编码格式是%s:" % (FilePath, Encoding))
      # 创建文件对象
      f = open(FilePath, 'r', encoding=Encoding)
      lines = f.read()
      # print(lines)

      # 将文件内容输出到指定地点
      # 创建鼠标键盘对象
      m = PyMouse()# 建立鼠标对象
      k = PyKeyboard()# 建立键盘对象
      # 获取文字输入位置

      location = m.position()
      m.click(location, location)
      # 自动输入部分

      k.type_string(lines)

      #关闭文件
      f.close()

    # 不要修改此返回值,否则将对按键进行拦截
    return True


def main():
    # 创建一个“钩子”管理对象
    hm = PyHook3.HookManager()
    # 监听所有键盘事件
    hm.KeyDown = onKeyboardEvent

    # 设置键盘“钩子”
    hm.HookKeyboard()

    # 进入循环,如不手动关闭,程序将一直处于监听状态
    pythoncom.PumpMessages()


if __name__ == "__main__":
    main()


我该如何修改代码才能处理中文字符?

tianyamingyue 发表于 2023-5-11 11:09:44

我没看明白,你要把中英文输入到输入框吗,代替键盘输入吗?直接用keyboard库啊,中英文都行。

sfqxx 发表于 2023-5-11 19:13:52

可以在代码中加上以下两行注释以支持中文输入:


# !/usr/bin/env python3
# _*_ coding:utf-8 _*_

将这两行代码添加到脚本的最上方,确保 Python 解释器知道脚本包含 UTF-8 编码的源文件。
有用请设置最佳答案

一阵三十六 发表于 2023-5-12 12:57:52

sfqxx 发表于 2023-5-11 19:13
可以在代码中加上以下两行注释以支持中文输入:




不是让python输出中文

wp231957 发表于 2023-5-12 14:16:22

sfqxx 发表于 2023-5-11 19:13
可以在代码中加上以下两行注释以支持中文输入:




这是py2.x 才用的套路   3.x 就不用了

sfqxx 发表于 2023-5-12 17:43:45

wp231957 发表于 2023-5-12 14:16
这是py2.x 才用的套路   3.x 就不用了

懂了

sfqxx 发表于 2023-5-12 21:51:58

一阵三十六 发表于 2023-5-12 12:57
不是让python输出中文

f = open(FilePath, 'r', encoding='utf-8')

陶远航 发表于 2023-5-12 23:01:09

您可以在Python代码中加入万能注释,例如: #coding = < gbk >,以解决在Python3中的中文字符编码问题. 另外,您可以使用Python的自然语言处理工具包NLTK来处理中文文本. 此外,还有其他方法可以解决Python处理中文的问题,如将输入的文本解码为unicode编码,然后输出时再编码成所需编码. 如果您需要更多帮助,请告诉我。

歌者文明清理员 发表于 2023-5-13 15:14:33

https://fishc.com.cn/forum.php?mod=viewthread&tid=226116

歌者文明清理员 发表于 2023-5-15 18:21:39

还是用pyautogui把,pyhook3太旧了,得py37,我们不好帮你调试{:10_277:}

sfqxx 发表于 2023-5-15 18:24:35

6,这都能最佳答案

sfqxx 发表于 2023-5-15 20:00:25

歌者文明清理员 发表于 2023-5-15 18:21
还是用pyautogui把,pyhook3太旧了,得py37,我们不好帮你调试

你的积分怎么超过我了

歌者文明清理员 发表于 2023-5-15 20:00:53

sfqxx 发表于 2023-5-15 20:00
你的积分怎么超过我了

一样

sfqxx 发表于 2023-5-15 20:01:59

歌者文明清理员 发表于 2023-5-15 20:00
一样

刚加的

你是不是让小号给你评分了;-)

歌者文明清理员 发表于 2023-5-15 20:04:42

sfqxx 发表于 2023-5-15 20:01
刚加的

你是不是让小号给你评分了;-)

Threebody1 发表于 2023-5-15 20:42:07

歌者文明清理员 发表于 2023-5-15 20:04


《没》
页: [1]
查看完整版本: 如何利用python将中英文混合的文本输入到输入框处