我想在Python中做零乱的事情(或在某些地方打井字游戏)。到目前为止,Here是我的代码。
import curses
board = {"1A": " ", "2A": " ", "3A": " ", "1B": " ", "2B": " ", "3B": " ",
"1C": " ", "2C": " ", "3C": " "}
s = curses.initscr()
sh, sw = s.getmaxyx()
w = curses.newwin(sh, sw, 0, 0)
curses.mousemask(1)
w.nodelay(False)
def printboard():
w.addstr(sh // 2 - 2, sw // 2 - 4, "{} | {} | {}".format(board.get("1A"), board.get("2A"), board.get("3A")))
w.hline(sh // 2 - 1, sw // 2 - 4, "-", 9)
w.addstr(sh // 2, sw // 2 - 4, "{} | {} | {}".format(board.get("1B"), board.get("2B"), board.get("3B")))
w.hline(sh // 2 + 1, sw // 2 - 4, "-", 9)
w.addstr(sh // 2 + 2, sw // 2 - 4, "{} | {} | {}".format(board.get("1C"), board.get("2C"), board.get("3C")))
while True:
printboard()
w.addstr(sh // 2 + 4, 1, "Naught's turn. Click on where you would like to place your naught.")
w.refresh()
event = w.getch()
if event == curses.KEY_MOUSE:
_, mousex, mousey, _, _ = curses.getmouse()
print(mousex, mousey)
w.refresh()
我已经阅读了文档,并且代码看起来正确。当我在终端中运行它时,出现董事会,并打印文本。但是当我左键单击时,该程序什么也没做。我不知道这是怎么回事。
答案 0 :(得分:0)
简短:程序不会调用keypad
长:
Python curses使用ncurses来获取鼠标事件。请参阅getch
的{{3}},
以下特殊键在
<curses.h>
中定义。
- 除了特殊情况
KEY_RESIZE
,有必要启用 getch键盘返回这些代码。
...
为鼠标事件返回
KEY_MOUSE
(请参见manual page)。这个 代码取决于是否启用了curs_mouse(3x)
,因为(例如,使用xterm鼠标协议)ncurses必须读取转义 序列,就像功能键一样。