Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 语法错误ncurses+;蟒蛇3_Python - Fatal编程技术网

Python 语法错误ncurses+;蟒蛇3

Python 语法错误ncurses+;蟒蛇3,python,Python,我一直在尝试使用Ncurses在Python3中编写我的第一个程序,我一直在努力找出这个语法错误。我试图构建ncurses菜单topbar菜单,我得到了以下错误 s.refresh() c = s.getch() ^ SyntaxError: invalid syntax 我一直在尝试从这里学习,但我不明白为什么我会有语法错误。当我测试它时,python3.4.0和python2.7.6都会发生这种情况。另外,当我去测试菜单时,它也不会被渲染。我什么也没看到。我

我一直在尝试使用Ncurses在Python3中编写我的第一个程序,我一直在努力找出这个语法错误。我试图构建ncurses菜单topbar菜单,我得到了以下错误

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
替换为问题中的固定文件。它应该能解决你的问题。