14 个版本

0.5.1 2024年5月12日
0.4.3 2024年5月6日
0.4.1 2023年6月27日
0.4.0 2023年3月31日
0.2.0 2021年10月9日

#827GUI

Download history 145/week @ 2024-04-23 97/week @ 2024-04-30 333/week @ 2024-05-07 29/week @ 2024-05-14 11/week @ 2024-05-21 1/week @ 2024-05-28 5/week @ 2024-06-04 1/week @ 2024-06-11

846 每月下载量

MIT 协议

335KB
181

Flemish

受 Iced 启发的 fltk-rs 的 Elmish 架构

用法

将 flemish 添加到您的依赖项

[dependencies]
flemish = "0.5"

用法示例

use flemish::{
    button::Button, color_themes, frame::Frame, group::Flex, prelude::*, OnEvent, Sandbox, Settings,
};

pub fn main() {
    Counter::new().run(Settings {
        size: (300, 100),
        resizable: true,
        color_map: Some(color_themes::BLACK_THEME),
        ..Default::default()
    })
}

#[derive(Default)]
struct Counter {
    value: i32,
}

#[derive(Debug, Clone, Copy)]
enum Message {
    IncrementPressed,
    DecrementPressed,
}

impl Sandbox for Counter {
    type Message = Message;

    fn new() -> Self {
        Self::default()
    }

    fn title(&self) -> String {
        String::from("Counter - fltk-rs")
    }

    fn update(&mut self, message: Message) {
        match message {
            Message::IncrementPressed => {
                self.value += 1;
            }
            Message::DecrementPressed => {
                self.value -= 1;
            }
        }
    }

    fn view(&mut self) {
        let col = Flex::default_fill().column();
        Button::default()
            .with_label("Increment")
            .on_event(|_| Message::IncrementPressed);
        Frame::default().with_label(&self.value.to_string());
        Button::default()
            .with_label("Decrement")
            .on_event(|_| Message::DecrementPressed);
        col.end();
    }
}

示例

要运行 示例:

cargo run --example flcalculator
cargo run --example fldialect
cargo run --example flnetport
cargo run --example flpicture
...

FlCalculator

FlCalculator

FlDialect

FlDialect

FlNetPort

FlNetPort

FlPicture

FlPicture

依赖项

~14MB
~310K SLoC