私はPython 2.7でcursesを使って単純なスクロール可能なメニューを構築しています。端末サイズが変更された場合も含めて(例えば、 mを押します)。私はこの問題を解明するために使っている簡単なテストコードを持っています。これが可能なら、私は本当に近いですが、私が見ているのは、(mRemoteNGを使って)端末ウィンドウのサイズを変更すると、スクリーンショットの一番下に表示されているように、私は、ウィンドウを垂直方向に拡張:Python Curses Border on Resize
を私は次のようにこれはテストするために使用していますコード:
import curses
import os
VERSION = "0.1-dev" #version number
screen = curses.initscr() #initialize the curses window
#Configure color pairs for showing select menu options as highlighted
curses.start_color() #enable color for highlighting menu options
curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) #color pair 1
highlightText = curses.color_pair(1) #color pair for highlighted menu option
normalText = curses.A_NORMAL #color pair for non-highlighted menu options
#Configure global variables for Curses
curses.noecho() #disable the keypress echo to prevent double input
curses.cbreak() #disable line buffers to run the keypress immediately
curses.curs_set(0)
screen.keypad(1) #enable keyboard use
screen.addstr(2, 2, "Screen Resize Test" + VERSION, curses.A_UNDERLINE)
#test screen resize
def main_screen():
escape = False
while escape == False:
maxY, maxX = screen.getmaxyx()
screen.border('|', '|', '-', '-', '+', '+', '+', '+')
screen.addstr(4, 2, "MaxY: " + str(maxY))
screen.addstr(5, 2, "MaxX: " + str(maxX))
screen.refresh()
x = screen.getch()
if x == ord("q"):
escape = True
main_screen()
curses.endwin() # *** CRITICAL *** this closes the curses menu and returns user to bash
os.system('clear') #clears the screen to avoid curses remnants
私はscreen.refresh()
とscreen.clear()
多くの異なる配置を試してみたが、それはそうありませんcursesウィンドウの端に残っている線を取り除きます。明らかに、これが可能であれば、私はこれらのどちらか/両方を配置するかを理解することができないか、正しい軌道にない。
私が追加した場合: 'ELIFのX == curses.KEY_RESIZE:サイズ変更に screen.erase()' を、ウィンドウはキー入力の原因になるまでブランクになりますすべてが再描画されます。私は 'elif'ブロックに' screen.refresh() 'を追加しようとしましたが、違いはありませんでした。しかし、あなたの提案は、私がサイズ変更時にゴースト・ラインにあった正確な問題を修正します。 – bradical987
問題を引き起こしていたこの問題を自分で解決し続けながら、私が追加したいくつかの行を忘れてしまった。また、 'elif'ブロックに' screen.addstr() '行を追加していないので、一旦画面が消去されると、キーを押すだけですべてを再描画することができました。 – bradical987