python curses - newwin 中的 .getch() 不起作用

标签 python curses getch

我正在尝试使用curses模块制作菜单系统。我有以下代码:

import sys, os, traceback, curses

def main(scrn):
    screen = scrn
    screen.border(0)
    curses.start_color()
    curses.init_pair(2,curses.COLOR_WHITE,curses.COLOR_BLUE)

    while True:
        event = screen.getch()
        if event == ord("q"):
            break
        elif event == curses.KEY_RIGHT:
            #enter function containing while loop, passing job
            job_sub()


#loop to hand the subscreen for a job element
def job_sub():

    screen = curses.newwin(5, 10, 3, 3)
    screen.box()
    objects =["RUN", "MAINTAIN", "EDIT"]

    for i in range( len(objects) ):
        if i == 0:
            screen.addstr(i+1,1, objects[i], curses.color_pair(2))
        else:
            screen.addstr(i+1,1, objects[i])

    screen.refresh()

    while True:
        event = screen.getch()
        if event == curses.KEY_LEFT:
            break

    screen.erase()
    return

if __name__=='__main__':
    try:
        # Initialize curses
        screen=curses.initscr()
        curses.noecho()
        curses.cbreak()
        screen.keypad(1)

        main(screen) 

        screen.keypad(0)
        curses.echo()
        curses.nocbreak()
        curses.endwin()
    except:
        # In event of error, restore terminal to sane state.
        screen.keypad(0)
        curses.echo()
        curses.nocbreak()
        curses.endwin()
        traceback.print_exc()

程序一直运行,直到我按下右箭头键。之后,它就卡住了,就像卡在一个循环中一样。它不会响应任何更多的输入。任何帮助表示赞赏。

最佳答案

在您的 job_sub() 函数中,您创建了一个新窗口,但没有为其启用键盘。因此,箭头键不会发送 curses.KEY_LEFT 值。

关于python curses - newwin 中的 .getch() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17328081/

相关文章:

python - PyQt 自动完成 QlineEdit 不显示列表项

python - 给定一个对象的坐标,如何确定它位于旋转坐标系的哪个象限?

python - 防止终端调整大小 python 诅咒

Python stdout 在调用 curses 后没有正确刷新

python - msvcrt.getch() 每次都会检测到空格

python - dill 转储 session : Making Jupyter-session pickle-able again

python - 我如何优化此函数以返回给定范围内具有唯一数字(即没有重复数字)的整数数?

c - 如何修复不需要的诅咒输出缩进

c - getch() 等待回车键?

c - 我需要更改什么才能使这个 C 程序在 Linux 上运行?