鱼C论坛

 找回密码
 立即注册
查看: 2475|回复: 7

关于键盘 按下任意按键不需要按回车键确定 就能吧当前按键赋值给变量的问题

[复制链接]
发表于 2020-2-12 01:10:33 | 显示全部楼层 |阅读模式

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

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

x
关于键盘 按下任意按键不需要按回车键去确定输入 就能吧当前按键赋值给变量的问题
比如:我程序写好后,按下一次a 按键,程序里面变量:x  的值就能变成a    再次按下y的按键  变量x的值又变成了y  
说白了就是打算用树莓派控制小车, 通过 按键wsad 控制小车的前后左右.
目前我的前进后退转弯的程序已经用input()写好,但是让小车前进 得按下 按键a 然后再 按回车按键  才能实现小车的动作

不止知道为啥,刚才发了一篇,发现有乱码,为了再次不出现乱码在发送前先截图
bbbb.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-12 01:11:12 | 显示全部楼层
真的又有乱码,纳闷...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 16:37:25 | 显示全部楼层
嗯,键盘事件监听啊,我知道的就只有 tkinter 和 pygame 里面有,而我没有深入了解 pygame.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 22:04:19 | 显示全部楼层
阴阳神万物主 发表于 2020-2-12 16:37
嗯,键盘事件监听啊,我知道的就只有 tkinter 和 pygame 里面有,而我没有深入了解 pygame.

pygame t听说要图形化,我没图像化  能详细说说tkinter吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 11:02:50 From FishC Mobile | 显示全部楼层
感觉没必要纠结于不按回车就能赋值给什么变量吧,可以监听键盘按下事件。我不清楚你的程序是运行在什么系统上的,如果是win ,pywin32库好像可以实现,其他界面库也都可以(是不是非要写界面不清楚,不是很了解)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 20:28:15 | 显示全部楼层
kong.Zhang 发表于 2020-2-12 22:04
pygame t听说要图形化,我没图像化  能详细说说tkinter吗?

tkinter 也是属于 “可视化编程” 的库,也许它的源代码中包含键盘事件监听的部分,但是我没有这么深入的研究它。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-15 21:45:06 | 显示全部楼层
hrp 发表于 2020-2-13 11:02
感觉没必要纠结于不按回车就能赋值给什么变量吧,可以监听键盘按下事件。我不清楚你的程序是运行在什么系统 ...

用树莓派控制无人机你就知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-15 22:33:39 | 显示全部楼层
kong.Zhang 发表于 2020-2-15 21:45
用树莓派控制无人机你就知道了


百度来的,修改了一点,写了个无限循环不断接收键盘输入,按一个按键立即有反应,只能帮你到这了:
  1. class _Getch:
  2.     """Gets a single character from standard input.  Does not echo to the
  3. screen."""
  4.     def __init__(self):
  5.         try:
  6.             self.impl = _GetchWindows()
  7.         except ImportError:
  8.             self.impl = _GetchUnix()

  9.     def __call__(self): return self.impl()


  10. class _GetchUnix:
  11.     def __init__(self):
  12.         import tty, sys

  13.     def __call__(self):
  14.         import sys, tty, termios
  15.         fd = sys.stdin.fileno()
  16.         old_settings = termios.tcgetattr(fd)
  17.         try:
  18.             tty.setraw(sys.stdin.fileno())
  19.             ch = sys.stdin.read(1)
  20.         finally:
  21.             termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
  22.         return ch


  23. class _GetchWindows:
  24.     def __init__(self):
  25.         import msvcrt

  26.     def __call__(self):
  27.         import msvcrt
  28.         return msvcrt.getch()

  29. while True:
  30.     getch = _Getch()
  31.     a = getch()
  32.     if(a == "3"):
  33.         print("yes")
  34.     else:
  35.         print("no")
复制代码


文章地址:
https://blog.csdn.net/chent86/article/details/76733655
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-22 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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