鱼C论坛

 找回密码
 立即注册
查看: 3177|回复: 20

[已解决]求教 怎么下载getch啊,全是英文看不懂

[复制链接]
发表于 2022-9-3 18:32:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问过一个大佬,说从https://github.com/joeyespo/py-getch下载,可是我不会。。。
最佳答案
2022-9-4 14:02:46
用git将项目clone到本地就可以了
git clone https://github.com/joeyespo/py-getch.git
如果你不会用git,我已经帮你下好了
py-getch.zip (40.37 KB, 下载次数: 5)
将附件下好后,在cmd中切换到py-getch目录中,再输入py setup.py install既可安装
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-4 14:02:46 | 显示全部楼层    本楼为最佳答案   
用git将项目clone到本地就可以了
git clone https://github.com/joeyespo/py-getch.git
如果你不会用git,我已经帮你下好了
py-getch.zip (40.37 KB, 下载次数: 5)
将附件下好后,在cmd中切换到py-getch目录中,再输入py setup.py install既可安装
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 17:07:05 | 显示全部楼层
临时号 发表于 2022-9-4 14:02
用git将项目clone到本地就可以了

如果你不会用git,我已经帮你下好了

C:\Users\user\Desktop\py-getch>py setup.py install
running install
C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\command\easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
running bdist_egg
running egg_info
writing py_getch.egg-info\PKG-INFO
writing dependency_links to py_getch.egg-info\dependency_links.txt
writing top-level names to py_getch.egg-info\top_level.txt
reading manifest file 'py_getch.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'research'
adding license file 'LICENSE'
adding license file 'AUTHORS.md'
writing manifest file 'py_getch.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\getch
copying build\lib\getch\getch.py -> build\bdist.win-amd64\egg\getch
copying build\lib\getch\pause.py -> build\bdist.win-amd64\egg\getch
copying build\lib\getch\__init__.py -> build\bdist.win-amd64\egg\getch
byte-compiling build\bdist.win-amd64\egg\getch\getch.py to getch.cpython-310.pyc
byte-compiling build\bdist.win-amd64\egg\getch\pause.py to pause.cpython-310.pyc
byte-compiling build\bdist.win-amd64\egg\getch\__init__.py to __init__.cpython-310.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying py_getch.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying py_getch.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying py_getch.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying py_getch.egg-info\not-zip-safe -> build\bdist.win-amd64\egg\EGG-INFO
copying py_getch.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
creating 'dist\py_getch-1.0.1-py3.10.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing py_getch-1.0.1-py3.10.egg
removing 'c:\users\user\appdata\local\programs\python\python310\lib\site-packages\py_getch-1.0.1-py3.10.egg' (and everything under it)
creating c:\users\user\appdata\local\programs\python\python310\lib\site-packages\py_getch-1.0.1-py3.10.egg
Extracting py_getch-1.0.1-py3.10.egg to c:\users\user\appdata\local\programs\python\python310\lib\site-packages
py-getch 1.0.1 is already the active version in easy-install.pth

Installed c:\users\user\appdata\local\programs\python\python310\lib\site-packages\py_getch-1.0.1-py3.10.egg
Processing dependencies for py-getch==1.0.1
Finished processing dependencies for py-getch==1.0.1

C:\Users\user\Desktop\py-getch>


这是什么意思?cmd中输入完就这样了 是安装好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-5 23:10:24 | 显示全部楼层
1222331231 发表于 2022-9-5 17:07
C:%users%user\Desktop\py-getch>py setup.py install
running install
C:%users%user\AppData\Local\P ...

Finished processing dependencies for py-getch==1.0.1
Finished的意思是已完成,说明安装好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 11:14:39 | 显示全部楼层
临时号 发表于 2022-9-5 23:10
Finished processing dependencies for py-getch==1.0.1
Finished的意思是已完成,说明安装好了
from getch import getch

while True:
    key = getch()
    if key.decode("utf-8") == "h":
        print("Hello, World!")
        break

运行后出现这个
Traceback (most recent call last):
  File "C:/Users/user/Desktop/1.py", line 5, in <module>
    if key.decode("utf-8") == "h":
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
怎么回事?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 13:15:00 | 显示全部楼层
1222331231 发表于 2022-9-6 11:14
运行后出现这个

怎么回事?

你输入中文干嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 13:47:41 | 显示全部楼层

哪里输入中文啦(=@__@=),没看到啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 13:51:26 | 显示全部楼层
1222331231 发表于 2022-9-6 13:47
哪里输入中文啦(=@__@=),没看到啊

你运行的时候你用的是中文输入法吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 13:54:10 | 显示全部楼层
临时号 发表于 2022-9-6 13:51
你运行的时候你用的是中文输入法吧

没有啊,用的系统自带的美式键盘啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 13:55:16 | 显示全部楼层
1222331231 发表于 2022-9-6 13:47
哪里输入中文啦(=@__@=),没看到啊

你重新运行一下
我这边运行没问题
from getch import getch

while True:
    key = getch()
    if key.decode("utf-8") == "h":
        print("Hello, World!")
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 13:57:30 | 显示全部楼层
临时号 发表于 2022-9-6 13:55
你重新运行一下
我这边运行没问题

还是报错,和原来一模一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 13:57:55 | 显示全部楼层
1222331231 发表于 2022-9-6 13:54
没有啊,用的系统自带的美式键盘啊

我找到原因了,它会从你的键盘缓冲区读一个字符,但如果你的键盘缓冲区有中文且被读到就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 13:59:27 | 显示全部楼层
1222331231 发表于 2022-9-6 13:57
还是报错,和原来一模一样

试一下
from getch import getch

while True:
    try:
        key = getch()
        if key.decode("utf-8") == "h":
            print("Hello, World!")
            break
    except UnicodeDecodeError:
        pass
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-6 14:05:19 | 显示全部楼层

不报错了,可是不管我按什么键程序都没反应啊,程序还一直运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 23:05:16 | 显示全部楼层
本帖最后由 临时号 于 2022-9-6 23:06 编辑
1222331231 发表于 2022-9-6 14:05
不报错了,可是不管我按什么键程序都没反应啊,程序还一直运行


这样的试一下,如果不行可以看下面
from getch import getch

while True:
    key = getch()
    if key == b"h":
        print("Hello, World!")
        break
如果上面的还是不行,那就只能换一个模块,不过会比getch复杂很多
这里我用的是pynput
使用前先在cmd中输入:
py -m pip install pynput
from pynput import keyboard

def press(key):
    try:
        char = key.char
    except AttributeError:
        char = key
    if char == "h":
        print("Hello, World!")
        exit(0)

listener = keyboard.Listener(on_press=press)
listener.start()
while True:
    pass
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 08:35:02 | 显示全部楼层
前面那个还是不行
后面那个摁 h 后出 helloworld了,可是它会自动蹦出那个killing的界面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 17:30:03 | 显示全部楼层
1222331231 发表于 2022-9-6 11:14
运行后出现这个

怎么回事?

你的报错信息显示,文件开头的一个字节0xff无法被utf-8编码解析。有可能是你的文件(1.py)开头增加了BOM,你试试其他编码,也就是把decode中的utf-8替换成GBK,或者utf-8-sig,看看行不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-8 08:13:55 | 显示全部楼层
Brick_Porter 发表于 2022-9-7 17:30
你的报错信息显示,文件开头的一个字节0xff无法被utf-8编码解析。有可能是你的文件(1.py)开头增加了BOM ...
======================= RESTART: D:\54942664\D其他\.py\1.py ======================
Traceback (most recent call last):
  File "D:\54942664\D其他\.py\1.py", line 5, in <module>
    if key.decode("utf-8-sig") == "h":
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\encodings\utf_8_sig.py", line 23, in decode
    (output, consumed) = codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

======================= RESTART: D:\54942664\D其他\.py\1.py ======================
Traceback (most recent call last):
  File "D:\54942664\D其他\.py\1.py", line 5, in <module>
    if key.decode("GBK") == "h":
UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: incomplete multibyte sequence

两个都不行。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-8 16:08:10 | 显示全部楼层
1222331231 发表于 2022-9-8 08:13
两个都不行。。。

目前我们能确定的是报错是由编码错误导致的,既然目前的gbk、utf-8、utf-8-sig都不行,那就最后试试utf-16了。要是这个还不行的话我们就不要再猜测到底是哪种编码了,直接查看getch()这个函数的定义,看看它的内部是怎样实现的,从而确定到底是哪种编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-8 17:27:58 | 显示全部楼层
Brick_Porter 发表于 2022-9-8 16:08
目前我们能确定的是报错是由编码错误导致的,既然目前的gbk、utf-8、utf-8-sig都不行,那就最后试试utf-1 ...

utf-16 还是不行
怎么查看getch的定义啊
好像扯远了,,,我在开一个帖子吧,这个旧帖子的最佳答案我就给前面那个临时号大佬了,(。&#12539;_&#12539;。)&#65417;I’m sorry~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 18:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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