如何修复 python curses 中转换为参数 2 的错误?

How do I fix a converting to parameter 2 error in python curses?

我在 Unicurses 工作,这是 python 的 curses 跨平台模块。我试图将“@”字符放在控制台的中央。我的代码是这样的:

from unicurses import *
def main():
    stdscr = initscr()
    max_y, max_x = getmaxyx( stdscr )
    move( max_y/2, max_x/2 )
    addstr("@")
    #addstr(str(getmaxyx(stdscr)))
    getch()
    endwin()
    return 0
if __name__ == "__main__" :
    main()

我一直收到错误消息

ctypes.ArgumentError was unhandled by user code
Message: argument 2: <class 'TypeError'>: Don't know how to convert parameter 2

对于这一行:

move( max_y/2, max_x/2 )

有谁知道这个错误的原因并修复它。谢谢!

问题是您将浮点数传递给 move 函数,而您应该传递整数。使用整数除法运算符 // 而不是 /.

from unicurses import *
def main():
    stdscr = initscr()
    max_y, max_x = getmaxyx( stdscr )
    move( max_y//2, max_x//2 ) # Use integer division to truncate the floats
    addstr("@")
    getch()
    endwin()
    return 0
if __name__ == "__main__" :
    main()