Maison >développement back-end >Golang >GoNCurses Actualiser la fenêtre d'arrière-plan après le déplacement de la fenêtre de premier plan
l'éditeur php Banana vous présente aujourd'hui une technique intéressante et pratique, qui consiste à utiliser la bibliothèque GoNCurses pour actualiser la fenêtre d'arrière-plan après le déplacement de la fenêtre avant. GoNCurses est une bibliothèque ncurses basée sur le langage Go permettant de créer des interfaces graphiques dans le terminal. Cependant, lorsque nous déplaçons la fenêtre de premier plan, la fenêtre d'arrière-plan ne s'actualise pas automatiquement, ce qui apporte quelques désagréments à nos opérations. En utilisant la méthode d'actualisation fournie par GoNCurses, nous pouvons résoudre ce problème et permettre à la fenêtre d'arrière-plan de s'actualiser automatiquement après le déplacement de la fenêtre de premier plan, améliorant ainsi l'expérience utilisateur. Voyons ensuite de plus près comment mettre en œuvre cette technique.
J'essaie de comprendre comment fonctionne ncurses
. Voici un exemple de ce que j'essaie de comprendre et de faire fonctionner.
Premières réflexions :
stdscr
)swin
) est au-dessus de la fenêtre 1 avec un arrière-plan différentVoici les paramètres :
stdscr, _ := gc.init() defer gc.end() gc.echo(false) gc.cursor(0) gc.cbreak(true) stdscr.setbackground('#') stdscr.moveprint(12, 15, "abcdefghijklmnopq...") stdscr.noutrefresh() y, x := 10, 20 swin, _ := gc.newwindow(4, 8, y, x) swin.keypad(true) swin.setbackground('.') swin.box(0, 0) swin.noutrefresh() gc.update()
Il existe également une for
boucle très simple qui permettra de déplacer la fenêtre de premier plan :
main: for { // stdscr.erase() // stdscr.noutrefresh() swin.movewindow(y, x) swin.noutrefresh() gc.update() switch swin.getchar() { case gc.key_right: x++ case gc.key_down: y++ case 'q': break main } } swin.delete() stdscr.delete()
Maintenant quand je bouge window 2
celui en arrière-plan ne se rafraîchit pas et laisse une trace :
########################## #######┌┌┌┌┌──────┐####### #######│││││......│####### ##abcde│││││......│...#### #######└└└└└──────┘####### ########################## ##########################
Quand je décommente stdscr.erase()
和 stdscr.noutrefresh()
时,我修复了踪迹,但当然我丢失了后台窗口上的所有数据,例如文本 "abcdefghijklmnopq..."
: p>
##################### #######┌──────┐###### #######│......│###### #######│......│###### #######└──────┘###### ##################### #####################
J'ai essayé de créer window 2
作为主窗口的子窗口,但没有成功。我该如何解决/处理这个问题?通常如何使用 ncurses
une fenêtre enfant de la fenêtre principale mais sans succès. Comment puis-je résoudre/traiter ce problème ? Comment les fenêtres qui se chevauchent sont-elles généralement gérées à l'aide de
les curses ne sont pas directement prises en charge (voir la bibliothèque panel Sinon, vous devez utiliser touchwin
作为解决方法(使用 dialog
和 cdk
touchwin
dialog
et cdk
terminé) 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!