溫馨提示×

Ubuntu上ncurses的菜單和表單創(chuàng)建

小樊
101
2024-08-07 14:48:26
欄目: 智能運維

在Ubuntu上,我們可以使用ncurses庫來創(chuàng)建菜單和表單界面。以下是一個簡單的示例代碼,演示了如何在Ubuntu上使用ncurses庫創(chuàng)建菜單和表單界面。

#include <ncurses.h>
#include <menu.h>
#include <form.h>

int main() {
    // 初始化ncurses
    initscr();
    cbreak();
    noecho();
    keypad(stdscr, TRUE);

    // 創(chuàng)建菜單
    ITEM *my_items[] = {
        new_item("Option 1", ""),
        new_item("Option 2", ""),
        new_item("Option 3", ""),
        NULL
    };
    MENU *my_menu = new_menu(my_items);
    post_menu(my_menu);
    refresh();

    // 創(chuàng)建表單
    FIELD *my_fields[2];
    my_fields[0] = new_field(1, 10, 4, 18, 0, 0);
    my_fields[1] = NULL;
    FORM *my_form = new_form(my_fields);
    post_form(my_form);
    refresh();

    // 循環(huán)處理用戶輸入
    int ch;
    while((ch = getch()) != 'q') {
        switch(ch) {
            case KEY_DOWN:
                menu_driver(my_menu, REQ_DOWN_ITEM);
                break;
            case KEY_UP:
                menu_driver(my_menu, REQ_UP_ITEM);
                break;
            case KEY_LEFT:
                form_driver(my_form, REQ_PREV_CHAR);
                break;
            case KEY_RIGHT:
                form_driver(my_form, REQ_NEXT_CHAR);
                break;
            case 10: // Enter key
                form_driver(my_form, REQ_NEW_LINE);
                break;
        }
    }

    // 清理資源
    unpost_menu(my_menu);
    free_menu(my_menu);
    unpost_form(my_form);
    free_form(my_form);
    endwin();

    return 0;
}

在上面的代碼中,我們首先初始化了ncurses,并創(chuàng)建了一個菜單和一個表單。然后進入一個循環(huán),處理用戶輸入。在循環(huán)中,我們使用menu_driver和form_driver函數(shù)來處理菜單和表單的導(dǎo)航和輸入。當(dāng)用戶按下q鍵時,程序退出。

要編譯這個代碼,可以使用以下命令:

gcc -o menu_form menu_form.c -lncurses -lmenu -lform

運行編譯后的可執(zhí)行文件即可在Ubuntu上看到一個簡單的ncurses菜單和表單界面。

0