Python 语法错误ncurses+;蟒蛇3
我一直在尝试使用Ncurses在Python3中编写我的第一个程序,我一直在努力找出这个语法错误。我试图构建ncurses菜单topbar菜单,我得到了以下错误Python 语法错误ncurses+;蟒蛇3,python,Python,我一直在尝试使用Ncurses在Python3中编写我的第一个程序,我一直在努力找出这个语法错误。我试图构建ncurses菜单topbar菜单,我得到了以下错误 s.refresh() c = s.getch() ^ SyntaxError: invalid syntax 我一直在尝试从这里学习,但我不明白为什么我会有语法错误。当我测试它时,python3.4.0和python2.7.6都会发生这种情况。另外,当我去测试菜单时,它也不会被渲染。我什么也没看到。我
s.refresh() c = s.getch()
^
SyntaxError: invalid syntax
我一直在尝试从这里学习,但我不明白为什么我会有语法错误。当我测试它时,python3.4.0
和python2.7.6
都会发生这种情况。另外,当我去测试菜单时,它也不会被渲染。我什么也没看到。我只是想做一个简单的程序,有非常基本的功能,没有什么特别的
问题是,当我尝试将这段ncurses代码添加到自己的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中实现这一点。不太确定是否可以将所有内容捆绑到一个脚本中,这是实现此目的的主要方法。问题在于这一行:
s.refresh() c = s.getch()
不能像现在这样将赋值语句与函数调用放在同一行上。您需要使用分号分隔行:
s.refresh(); c = s.getch()
# ^
但是请注意,许多Python程序员发现分号的使用不雅观。最好只使用两行:
s.refresh()
c = s.getch()
啊,好吧,我现在明白怎么回事了。但是现在我在
return CONTINUE
上得到了这个SyntaxError:'return'外部函数
,我检查了缩进,它与4个空格缩进一致。知道它为什么抱怨吗?只有在函数外部编写return语句时才能生成该错误。如果您确信您没有混合制表符和空格(这是这些类型错误的一个巨大来源),那么您应该扫描源文件以查找每次出现的return
。其中一个或多个不合适。通常,这是通过按Ctrl+F,然后输入想要查找的内容来完成的。我仔细检查了每一行,都是空格,没有制表符,但错误仍然存在。我认为您的文件\u func
函数中if语句的缩进是错误的。我已经编辑了你的问题来解决这个问题(如你所说,使用4个空格)。将源文件中的文件\u func
替换为问题中的固定文件。它应该能解决你的问题。