Function terminal_menu::button

source ·
pub fn button<T: Into<String>>(name: T) -> TerminalMenuItem
Expand description

Make a button terminal-menu item. Exits the menu with all the parent menus when pressed.

Example

use terminal_menu::{menu, button, run, mut_menu};
let my_menu = menu(vec![
    button("Alice"),
    button("Bob")
]);
run(&my_menu);
println!("Selected Button: {}", mut_menu(&my_menu).selected_item_name());
Examples found in repository?
examples/long.rs (line 10)
5
6
7
8
9
10
11
12
13
14
15
fn main() {
    use terminal_menu::{menu, button, run, mut_menu};
    let menu = menu(

        // create buttons representing numbers from 1 to 100
        (1..100).map(|n| button(format!("{}", n))).collect()

    );
    run(&menu);
    println!("{}", mut_menu(&menu).selected_item_name());
}
More examples
Hide additional examples
examples/cancel.rs (line 9)
5
6
7
8
9
10
11
12
13
14
15
fn main() {
    use terminal_menu::{menu, label, button, run, mut_menu};
    let menu = menu(vec![
        label("press the button or hit 'q' or esc!"),
        button("button")
    ]);
    run(&menu);

    // true if exited with 'q' or esc, false if button was pressed
    println!("{}", mut_menu(&menu).canceled());
}
examples/async.rs (line 9)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
fn main() {
    use terminal_menu::{menu, label, button, activate, wait_for_exit};
    let menu = menu(vec![
        label("do work when menu open!"),
        button("get me out of here!")
    ]);

    // like run but doesn't block
    activate(&menu);

    // do stuff
    let mut num: usize = 1;
    for i in 2..10 {
        num *= i;
    }

    wait_for_exit(&menu);
    println!("{}", num);
}
examples/colors.rs (line 19)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
fn main() {
    use terminal_menu::*;

    // see the crossterm crate for all the color options
    use crossterm::style::Color;

    let menu = menu(vec![

        label("COLOR!"),
        label("Red").colorize(Color::Red),
        label("Green").colorize(Color::Green),
        label("Blue").colorize(Color::Blue),

        // selected item is always cyan
        button("Cyan")
    ]);
    run(&menu);
}
examples/simple.rs (line 20)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fn main() {
    use terminal_menu::{menu, label, button, run, mut_menu};
    let menu = menu(vec![

        // label:
        //  not selectable, useful as a title, separator, etc...
        label("----------------------"),
        label("terminal-menu"),
        label("use wasd or arrow keys"),
        label("enter to select"),
        label("'q' or esc to exit"),
        label("-----------------------"),

        // button:
        //  exit the menu
        button("Alice"),
        button("Bob"),
        button("Charlie")

    ]);
    run(&menu);

    // you can get the selected buttons name like so:
    println!("Selected: {}", mut_menu(&menu).selected_item_name());
}
examples/selections.rs (line 25)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
fn main() {
    use terminal_menu::{menu, label, button, list, scroll, run, mut_menu};
    let menu = menu(vec![
        label("lists and scrolls"),

        // with list and scroll you can select a value from a group of values
        // you can change the selected value with arrow keys, wasd, or enter

        // use arrow keys or wasd
        // enter to select

        // list:
        //  show all values
        //  surround the selected value with brackets
        list("li", vec!["Alice", "Bob", "Charlie"]),

        // scroll:
        //  show only the selected item
        scroll("sc", vec!["Alice", "Bob", "Charlie"]),

        button("exit")
    ]);
    run(&menu);
    {
        let mm = mut_menu(&menu);
        println!("{}", mm.selection_value("li"));
        println!("{}", mm.selection_value("sc"));
    }
}