私が書き込もうとしているプログラムは、「Hello World」をウィンドウに出力します。
Hello World をマウスでクリックすると、Hello World が 1 文字ずつ読み込まれます
次に、カーソルが画面のさらに下に移動し、読み取った内容が表示されます。
実際に表示されるのは文字化けです。
Hello world
^[[M %!^[[M#%!
そのはず:
Hello world
Hello world
コードを以下に示します。
文字列全体を読み取る方法が見つからなかったため、文字列を1文字ずつ読み取っています。
import curses
# Initialize variables
q = -1
stdscr = curses.initscr()
curses.mousemask(1)
curses.start_color()
# color pair 1 = red text on white background
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
stdscr.bkgd(' ', curses.color_pair(1))
stdscr.addstr( "Hello world", curses.color_pair(1) )
# Move cursor furthur down screen and slightly to the right
stdscr.move(10,10)
while True:
event = stdscr.getch()
if event == ord('q'):
break # quit if q is pressed
if event == curses.KEY_MOUSE:
_, mx, my, _, _ = curses.getmouse()
y, x = stdscr.getyx() # put cursor position in x and y
# read the line character by character into char array called mystr
mystr = []
for i in range(140):
mystr.append(stdscr.inch(my, i)) # read char into mystr
stdscr.addstr(y, x, "".join(mystr)) # Try to display char array
# but it's garbled
stdscr.refresh()
curses.endwin()