2017-03-04 3 views
0

私はPythonのCursesでインターフェイスを作ろうとしていますが、スクリプトが実行されている間にウィンドウのターミナルが大きくなると移植性を向上させることができません。例えば移植可能なcursesインターフェースを作るにはどうすればいいですか?

、ウィンドウ(height:80,width:24)でこのコード:私はサイズを変更する場合

#!/usr/bin/python 

import curses 
import time 
stdscr = curses.initscr() 
curses.cbreak() 
curses.noecho() 
stdscr.keypad(1) 

try: 
# Run your code here 
    height,width = stdscr.getmaxyx() 
    num = min(height,width) 
    for x in range(num): 
     stdscr.addch(x,x,'X') 
    stdscr.refresh() 
    time.sleep(3) 
finally: 
    curses.nocbreak() 
    stdscr.keypad(0) 
    curses.echo() 
    curses.endwin() 

がうまくいくと任意のウィンドウを備えたポータブルだろう(それはウィンドウ全体のサイズのために多くの「X」文字を印刷します)が、実行中の2回目には動作しません。端末の一部では空になります。

私はそれが私が望むように動作させることができますか?

+0

私はあなたがそれをキャッチし、新しいサイズを取得し、あなたの呪いのものを再描画する必要があるだろうと思いますので、 'SIGWINCH'と呼ばれるウィンドウサイズの変更がわかります信号が何とか –

+0

@MarkSetchell :-) ... Theresのだ可能性あなたは例を示してください? – SerxWilliam

+0

申し訳ありませんが、私は何も持っていません。 –

答えて

0

あなたはncursesのはSIGWINCHによって中断されたときにKEY_RESIZEを返します。これは、getchを呼び出すことにより、(ncursesベースを使用して)SIGWINCHを処理する必要があると思います。

さらにリーディング:

関連する問題