1222331231 发表于 2022-9-3 18:32:51

求教 怎么下载getch啊,全是英文看不懂

问过一个大佬,说从https://github.com/joeyespo/py-getch下载,可是我不会。。。

临时号 发表于 2022-9-4 14:02:46

用git将项目clone到本地就可以了
git clone https://github.com/joeyespo/py-getch.git
如果你不会用git,我已经帮你下好了

将附件下好后,在cmd中切换到py-getch目录中,再输入py setup.py install既可安装

1222331231 发表于 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中输入完就这样了 是安装好了吗?

临时号 发表于 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的意思是已完成,说明安装好了

1222331231 发表于 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

怎么回事?

临时号 发表于 2022-9-6 13:15:00

1222331231 发表于 2022-9-6 11:14
运行后出现这个

怎么回事?

你输入中文干嘛

1222331231 发表于 2022-9-6 13:47:41

临时号 发表于 2022-9-6 13:15
你输入中文干嘛

哪里输入中文啦(=@__@=),没看到啊

临时号 发表于 2022-9-6 13:51:26

1222331231 发表于 2022-9-6 13:47
哪里输入中文啦(=@__@=),没看到啊

你运行的时候你用的是中文输入法吧

1222331231 发表于 2022-9-6 13:54:10

临时号 发表于 2022-9-6 13:51
你运行的时候你用的是中文输入法吧

没有啊,用的系统自带的美式键盘啊

临时号 发表于 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

1222331231 发表于 2022-9-6 13:57:30

临时号 发表于 2022-9-6 13:55
你重新运行一下
我这边运行没问题

还是报错,和原来一模一样

临时号 发表于 2022-9-6 13:57:55

1222331231 发表于 2022-9-6 13:54
没有啊,用的系统自带的美式键盘啊

我找到原因了,它会从你的键盘缓冲区读一个字符,但如果你的键盘缓冲区有中文且被读到就会报错

临时号 发表于 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

1222331231 发表于 2022-9-6 14:05:19

临时号 发表于 2022-9-6 13:59
试一下

不报错了,可是不管我按什么键程序都没反应啊,程序还一直运行

临时号 发表于 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

1222331231 发表于 2022-9-7 08:35:02

前面那个还是不行
后面那个摁 h 后出 helloworld了,可是它会自动蹦出那个killing的界面

Brick_Porter 发表于 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,看看行不行

1222331231 发表于 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

两个都不行。。。

Brick_Porter 发表于 2022-9-8 16:08:10

1222331231 发表于 2022-9-8 08:13
两个都不行。。。

目前我们能确定的是报错是由编码错误导致的,既然目前的gbk、utf-8、utf-8-sig都不行,那就最后试试utf-16了。要是这个还不行的话我们就不要再猜测到底是哪种编码了,直接查看getch()这个函数的定义,看看它的内部是怎样实现的,从而确定到底是哪种编码

1222331231 发表于 2022-9-8 17:27:58

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

utf-16 还是不行
怎么查看getch的定义啊
好像扯远了,,,我在开一个帖子吧,这个旧帖子的最佳答案我就给前面那个临时号大佬了,(。・_・。)ノI’m sorry~
页: [1] 2
查看完整版本: 求教 怎么下载getch啊,全是英文看不懂