鱼C论坛

 找回密码
 立即注册
查看: 1307|回复: 15

[已解决]如何利用python将中英文混合的文本输入到输入框处

[复制链接]
发表于 2023-5-11 11:09:43 | 显示全部楼层 |阅读模式
50鱼币
以下是可以输出英文到输入框的代码,但是处理不了中文:
# !/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[0], location[1])
        # 自动输入部分

        k.type_string(lines)

        #关闭文件
        f.close()

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


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

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

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


if __name__ == "__main__":
    main()

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

最佳答案
2023-5-11 11:09:44
我没看明白,你要把中英文输入到输入框吗,代替键盘输入吗?直接用keyboard库啊,中英文都行。

最佳答案

查看完整内容

我没看明白,你要把中英文输入到输入框吗,代替键盘输入吗?直接用keyboard库啊,中英文都行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 11:09:44 | 显示全部楼层    本楼为最佳答案   
我没看明白,你要把中英文输入到输入框吗,代替键盘输入吗?直接用keyboard库啊,中英文都行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 19:13:52 | 显示全部楼层
可以在代码中加上以下两行注释以支持中文输入:
# !/usr/bin/env python3
# _*_ coding:utf-8 _*_
将这两行代码添加到脚本的最上方,确保 Python 解释器知道脚本包含 UTF-8 编码的源文件。
有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-12 12:57:52 | 显示全部楼层
sfqxx 发表于 2023-5-11 19:13
可以在代码中加上以下两行注释以支持中文输入:

不是让python输出中文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-12 14:16:22 | 显示全部楼层
sfqxx 发表于 2023-5-11 19:13
可以在代码中加上以下两行注释以支持中文输入:

这是py2.x 才用的套路   3.x 就不用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-12 17:43:45 | 显示全部楼层
wp231957 发表于 2023-5-12 14:16
这是py2.x 才用的套路   3.x 就不用了

懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-12 21:51:58 | 显示全部楼层
一阵三十六 发表于 2023-5-12 12:57
不是让python输出中文
f = open(FilePath, 'r', encoding='utf-8')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-12 23:01:09 | 显示全部楼层
您可以在Python代码中加入万能注释,例如: #coding = < gbk >,以解决在Python3中的中文字符编码问题. 另外,您可以使用Python的自然语言处理工具包NLTK来处理中文文本. 此外,还有其他方法可以解决Python处理中文的问题,如将输入的文本解码为unicode编码,然后输出时再编码成所需编码. 如果您需要更多帮助,请告诉我。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-13 15:14:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 18:21:39 | 显示全部楼层
还是用pyautogui把,pyhook3太旧了,得py37,我们不好帮你调试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 18:24:35 From FishC Mobile | 显示全部楼层
6,这都能最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 20:00:25 | 显示全部楼层
歌者文明清理员 发表于 2023-5-15 18:21
还是用pyautogui把,pyhook3太旧了,得py37,我们不好帮你调试

你的积分怎么超过我了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 20:00:53 | 显示全部楼层
sfqxx 发表于 2023-5-15 20:00
你的积分怎么超过我了

一样

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
Threebody1 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 20:01:59 | 显示全部楼层

刚加的

你是不是让小号给你评分了;-)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 20:04:42 | 显示全部楼层
sfqxx 发表于 2023-5-15 20:01
刚加的

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

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
Threebody1 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 20:42:07 | 显示全部楼层

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
歌者文明清理员 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表