Rust语言之egui库窗口中菜单栏、事件、悬浮菜单、案例(9)

案例(1):添加菜单栏及子栏

输入代码:

//菜单栏
use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //控件添加区
            ui.menu_button("menu", |ui|{
                ui.menu_button("File", |ui|{
                    ui.button("csv");
                    ui.button("txt");
                });
                ui.menu_button("About", |ui|{
                    ui.button("csv");
                    ui.button("txt");
                });
            });
        });
	})
}

显示:

案例(2):添加菜单栏简单选中事件

输入代码:

//菜单栏
use eframe::egui;

fn main() -> eframe::Result<()> {
    let mut key = String::new();
    let options = eframe::NativeOptions::default();

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //控件添加区
            ui.menu_button("menu", |ui|{
                ui.menu_button("File", |ui|{
                    if ui.button("csv").clicked(){
                        key = "File_csv".into();
                        ui.close_menu();
                    }
                    if ui.button("txt").clicked(){
                        key = "File_txt".into();
                        ui.close_menu();
                    }
                });
                ui.menu_button("About", |ui|{
                    if ui.button("csv").clicked(){
                        key = "About_csv".into();
                    }
                    if ui.button("txt").clicked(){
                        key = "About_txt".into();
                    }
                });
            });
            ui.label(&key);
        });
	})
}

显示:

案例(3):添加菜单栏添加子栏复选框

输入代码:

//菜单栏
use eframe::egui;

fn main() -> eframe::Result<()> {
    let mut onoff = false;
    let mut updown = false;
    let mut high_low=false;
    let options = eframe::NativeOptions::default();

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //控件添加区
            ui.menu_button("Menu", |ui|{
                ui.menu_button("key", |ui|{
                    ui.checkbox(&mut onoff, "onoff");
                    ui.checkbox(&mut updown, "updown");
                    ui.checkbox(&mut high_low, "high_low");
                });
            });
        });
	})
}

显示:

案例(4):添加悬浮菜单

输入代码:

use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //控件添加区
            ui.button("button").context_menu(|ui|{
                ui.button("button").context_menu(|ui|{
                    ui.menu_button("223", |ui|{
                        ui.menu_button("223", |ui|{
                            ui.menu_button("223", |ui|{

                            });
                        });
                    });
                });
            });
            ui.label("label").context_menu(|ui|{
                ui.menu_button("223", |ui|{
                    ui.menu_button("223", |ui|{
                        ui.menu_button("223", |ui|{

                        });
                    });
                });
            });
        });
	})
}

显示:

案例(5):整合案例

输入代码:

use eframe::egui;

fn main() -> Result<(), eframe::Error> {

    let options = eframe::NativeOptions {
        viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]),
        ..Default::default()
    };

    // Our application state:
    let mut name = "Arthur".to_owned();
    let mut age = 42;

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            ui.heading("My egui Application");
            ui.horizontal(|ui| {
                let name_label = ui.label("Your name: ");
                ui.text_edit_singleline(&mut name)
                    .labelled_by(name_label.id);
            });
            ui.add(egui::Slider::new(&mut age, 0..=120).text("age"));
            if ui.button("Increment").clicked() {
                age += 1;
            }
            ui.label(format!("Hello '{name}', age {age}"));
        });
    })
}

显示:

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值