1

我在 Unicurses 工作,这是一个用于 python 的跨平台诅咒模块。我试图将“@”字符放在控制台的中心。我的代码是这样的:

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 )

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

4

1 回答 1

0

问题是您将浮点数传递给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()
于 2015-12-23T15:15:41.823 回答