如何解决ncurses:如何检查鼠标的左键或右键单击?
考虑该程序:
import _curses # _curses.pyd supplied locally for python27 win32
import curses
screen = curses.initscr()
#curses.noecho()
curses.curs_set(0)
screen.keypad(1)
curses.mousemask(curses.ALL_MOUSE_EVENTS)
screen.addstr("This is a Sample Curses Script\n\n")
key=0
while key!=27: # Esc to close
key = screen.getch()
#screen.erase()
if key == curses.KEY_MOUSE:
_,mx,my,_,bstate = curses.getmouse()
if bstate & curses.BUTTON1_CLICKED:
screen.addstr(" left was clicked")
else:
screen.addstr(" right was clicked")
screen.refresh()
screen.endwin()
我在linux上尝试过,但是它不能正确显示单击的按钮,有时可以正确显示,有时不能。我注意到bstate
的右键小于10。它恰好是4,但bstate有时是4,有时是2,依此类推。而左键的它是1000以上。我能用这种观察来获得被点击的按钮吗?
解决方法
尝试使用此脚本检测左键和右键:
import _curses # _curses.pyd supplied locally for python27 win32
import curses
screen = curses.initscr()
#curses.noecho()
curses.curs_set(0)
screen.keypad(1)
curses.mousemask(curses.ALL_MOUSE_EVENTS)
screen.addstr("This is a Sample Curses Script\n\n")
key=0
while key!=27: # Esc to close
key = screen.getch()
#screen.erase()
if key == curses.KEY_MOUSE:
_,mx,my,_,bstate = curses.getmouse()
y,x = screen.getyx()
if (bstate & curses.BUTTON1_PRESSED != 0 or
bstate & curses.BUTTON1_CLICKED != 0):
screen.addstr(my,"left was clicked")
elif (bstate & curses.BUTTON3_PRESSED != 0 or
bstate & curses.BUTTON3_CLICKED != 0):
screen.addstr(my,"right was clicked")
screen.refresh()
curses.endwin()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。