我一直在尝试使用Ncurses在Python 3中创建我的第一个程序,而我却试图找出这个语法错误。我正在尝试构建ncurses菜单顶部菜单,我收到以下错误;
s.refresh() c = s.getch()
^
SyntaxError: invalid syntax
我一直在尝试从这里学习http://www.ibm.com/developerworks/library/l-python6/#h3,但我无法弄清楚为什么我会因此而出现语法错误。当我测试它时,Python 3.4.0
和Python 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()
行的上述代码示例上遇到语法错误。
这是第一次在Python3和Ncurses中尝试这样的东西,我想试试看我能做些什么来制作一个简单的功能程序。另外,我不太确定如何使用Ncurses更多地自定义输出,我确实想要更改颜色并将背景填充放到它创建的盒装窗口中,但不太确定,教程我是'我已经读过,不清楚如何将它实现到Python中。不太确定我是否可以将它全部捆绑到一个脚本中,这是主要的想法。
答案 0 :(得分:1)
问题在于这一行:
s.refresh() c = s.getch()
您不能将赋值语句放在与您正在执行的函数调用相同的行上。您需要使用分号来分隔行:
s.refresh(); c = s.getch()
# ^
但请注意,许多Python程序员发现使用分号不优雅。最好只使用两行:
s.refresh()
c = s.getch()