诅咒没有在Python中注册鼠标点击

时间:2018-09-18 19:15:30

标签: python mouse ncurses curses

我想在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()

我已经阅读了文档,并且代码看起来正确。当我在终端中运行它时,出现董事会,并打印文本。但是当我左键单击时,该程序什么也没做。我不知道这是怎么回事。

1 个答案:

答案 0 :(得分:0)

简短:程序不会调用keypad

长: Python curses使用ncurses来获取鼠标事件。请参阅getch的{​​{3}},

  

以下特殊键在 <curses.h> 中定义。

     
      
  • 除了特殊情况 KEY_RESIZE ,有必要启用          getch键盘返回这些代码。
  •   
     

...

     
      为鼠标事件返回
  • KEY_MOUSE (请参见manual page)。这个          代码取决于是否启用了curs_mouse(3x),因为(例如,使用xterm鼠标协议)ncurses必须读取转义          序列,就像功能键一样。
  •