语法错误ncurses + python3

时间:2014-11-13 15:46:09

标签: python

我一直在尝试使用Ncurses在Python 3中创建我的第一个程序,而我却试图找出这个语法错误。我正在尝试构建ncurses菜单顶部菜单,我收到以下错误;

s.refresh()  c = s.getch()  
             ^
SyntaxError: invalid syntax

我一直在尝试从这里学习http://www.ibm.com/developerworks/library/l-python6/#h3,但我无法弄清楚为什么我会因此而出现语法错误。当我测试它时,Python 3.4.0Python 2.7.6都会发生这种情况。当我去测试菜单时,菜单也不会呈现。我什么都没有显示出来。我只想尝试制作一个具有非常基本功能的简单程序,没什么特别的。

当我尝试将它添加到我自己的python脚本时,问题是这段ncurses代码

def file_func():
    s = curses.newwin(5,10,2,1)
    s.box()
    s.addstr(1,2, "I", hotkey_attr)
    s.addstr(1,3, "nput", menu_attr)
    s.addstr(2,2, "O", hotkey_attr)
    s.addstr(2,3, "utput", menu_attr)
    s.addstr(3,2, "T", hotkey_attr)
    s.addstr(3,3, "ype", menu_attr)
    s.addstr(1,2, "", hotkey_attr)
    s.refresh()  c = s.getch()  
    if c in (ord('I'), ord('i'), curses.KEY_ENTER, 10):
        curses.echo()
        s.erase()
        screen.addstr(5,33, " "*43, curses.A_UNDERLINE)
        cfg_dict['source'] = screen.getstr(5,33)
        curses.noecho()
    else:
        curses.beep()
        s.erase()
    return CONTINUE

这是在尝试添加菜单之前当前输出的内容,我在s.refresh() c = s.getch()行的上述代码示例上遇到语法错误。

preview example of output before trying to add menu 这是第一次在Python3和Ncurses中尝试这样的东西,我想试试看我能做些什么来制作一个简单的功能程序。另外,我不太确定如何使用Ncurses更多地自定义输出,我确实想要更改颜色并将背景填充放到它创建的盒装窗口中,但不太确定,教程我是'我已经读过,不清楚如何将它实现到Python中。不太确定我是否可以将它全部捆绑到一个脚本中,这是主要的想法。

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

s.refresh()  c = s.getch() 

您不能将赋值语句放在与您正在执行的函数调用相同的行上。您需要使用分号来分隔行:

s.refresh(); c = s.getch()
#          ^

但请注意,许多Python程序员发现使用分号不优雅。最好只使用两行:

s.refresh()
c = s.getch()