有没有办法从用户输入读取一个单个字符?例如,他们在终端按一个键然后返回(有点像getch()
).我知道Windows中有一个功能,但我想要一些跨平台的功能.
我试图将左右箭头键绑定到Tkinter中的事件,但是当我运行程序时,它似乎没有触发事件.这是代码:
from Tkinter import *
main = Tk()
def leftKey(event):
print "Left key pressed"
def rightKey(event):
print "Right key pressed"
frame = Frame(main, width=100, height=100)
frame.bind('<Left>', leftKey)
frame.bind('<Right>', rightKey)
frame.pack()
frame.mainloop()
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
我有一个线程类,其循环需要每秒执行4次.我知道我可以做类似的事情
do_stuff()
time.sleep(0.25)
Run Code Online (Sandbox Code Playgroud)
但问题是,这是不考虑所需的时间do_stuff()
.实际上,这需要是一个实时线程.有没有办法实现这个目标?理想情况下,线程在不执行代码时仍会处于休眠状态.
这可能是一个xy问题,但我正在尝试构建一个基于内核的文本编辑器,类似于vim
或者nano
,我知道如何使用转义字符清除屏幕,然后重新打印,我可以让它接受字符,但是我不知道如何让它接受箭头输入导航.我认为它们有ASCII值,但显然不是.有没有办法使用箭头,还是我必须进行导航模式和插入模式vim
?
我也曾经简单地玩过curses
,但这是令人望而却步的,因为据我所知,必须为它打开一个全新的窗口,这与我所拥有的单个终端窗口的视觉不兼容.
编辑:curses
也是禁止,因为它清除了窗口,我不想要.
我正在制作一个基于文本的游戏,其中有一个选项可以为他们的角色选择一个类。目前,玩家输入他们的选项,要么输入数字,要么输入班级名称。它运作良好。
但是,我想让玩家使用箭头键导航菜单并使用“输入”键选择一个选项。为了明确他们将选择哪个选项,我还希望突出显示所选选项的文本。如果你曾经玩过 ASCII roguelike,你就会知道它是什么样的。
这是我目前拥有的类代码:
def character():
print "What is your class?"
print "1. The sneaky thief."
print "2. The smarty wizard."
print "3. The proletariat."
charclass = raw_input("> ")
if charclass == "1" or "thief":
charclass = thief
print "You are a thief!"
elif charclass == "2" or "wizard":
charclass = wizard
print "You are a wizard!"
elif charclass == "3" or "prole":
charclass = prole
print "You are a prole!"
else:
print "I'm sorry, I didn't get that" …
Run Code Online (Sandbox Code Playgroud)