我正在学习如何使用诅咒,并且试图创建一个简单的程序来开始。我期望该程序始终在左上角打印一个q,然后在1,1中打印最近按下的字符。但是我不确定如何设置光标的位置,应该通过使用curses.setsyx(y,x)函数来更改它的位置,但是它不起作用。这是我的程序:
import curses
import sys,os
def screen_init(stdscr):
stdscr.clear()
stdscr.refresh()
stdscr.scrollok(1)
height, width = stdscr.getmaxyx()
curses.start_color()
curses.init_pair(1, curses.COLOR_CYAN, curses.COLOR_BLACK)
while True:
stdscr.addstr(0, 0, "q", curses.color_pair(1))
key = stdscr.getch()
stdscr.addstr(1, 1, chr(int(key)), curses.color_pair(1))
if key == ord('q'):
break
elif key == ord('p'):
curses.setsyx(3, 3)
curs_y, curs_x = curses.getsyx()
curses.doupdate()
stdscr.addstr(1, 1, "clicked! " + str(curs_x) + " " +
str(curs_y), curses.color_pair(1))
stdscr.refresh()
curses.endwin()
def main():
curses.wrapper(screen_init)
if (__name__ == "__main__"):
main();
关于为什么它什么也没做的任何想法?当我使用getsyx()时,它的值为3、3,但光标的真实位置没有改变
答案 0 :(得分:1)
setsyx
和getsyx
影响到一个名为 newscr
的特殊工作区屏幕,该屏幕用于构造发送到 stdscr
的更改当您致电 refresh
时。
stdscr
具有自己的位置,不受这些呼叫的影响。
答案 1 :(得分:0)
您可以改用stdscr.getyx()
和stdscr.move(y, x)
。