Was ist der richtige Weg, um eine Zeile an den unteren Rand eines Terminal-Fensters zu drucken, das die Größenänderung verarbeiten kann?Python Curses Terminal Größe ändern Problem
import curses
from curses import wrapper
def main(stdscr):
inp = 0
y,x = stdscr.getmaxyx()
stdscr.clear()
stdscr.nodelay(1)
while inp != 48 and inp != 27:
stdscr.addnstr(y-1,0, 'I AM KILL TERMINAL WHEN RESIZE AAAAAAAH', x)
inp = stdscr.getch()
wrapper(main)
Sobald ich das Terminal zu weniger Spalten dann die Länge der Zeichenfolge der Größe versucht, es auf die nächste Zeile und Fehler zu wickeln aus. Ich kann nichts in der Dokumentation zum Deaktivieren des Wrappings sehen.
Ich habe versucht, meine max y, x Werte vor der addstr Funktion zu aktualisieren.
while inp != 48 and inp != 27:
if (y,x) != stdscr.getmaxyx():
y,x = stdscr.getmaxyx()
stdscr.addnstr(y-1,0, 'I AM KILL TERMINAL WHEN RESIZE AAAAAAAH', x)
inp = stdscr.getch()
ich auch habe versucht SIGWINCH Erfassung
while inp != 48 and inp != 27:
def resize_handler(signum, frame):
stdscr.erase()
stdscr.refresh()
termsize = shutil.get_terminal_size()
curses.resizeterm(termsize[1],termsize[0])
y,x = stdscr.getmaxyx()
signal.signal(signal.SIGWINCH, resize_handler)
stdscr.addnstr(y-1,0, 'I AM KILL TERMINAL WHEN RESIZE AAAAAAAH', x)
inp = stdscr.getch()
Doch diese beiden scheinen früh genug, um das Terminal-Update zu erfassen.
diesen Link https Siehe: // mail .python.org/pipermail/python-list/2007-Februar/426098.html – Bijoy