Rust语言使用iced实现简单GUI页面

使用cargo新建一个rust项目

bash 复制代码
cargo new gui_demo
cd gui_demo

编辑Cargo.toml文件 ,添加iced依赖

rust 复制代码
[package]
name = "gui_demo"
version = "0.1.0"
edition = "2021"

[dependencies]
iced = "0.4.2"

编辑src/main.rs文件:

rust 复制代码
use iced::{button, widget::{Button, Column, Text}, Application, Command, Element, Settings, Subscription};
use iced::executor::Default as Executor;

// 定义应用程序的状态
struct RustGuiApp {
    count: i32,
    button_state: button::State,
}

// 定义应用程序的消息类型
#[derive(Debug, Clone, Copy)]
enum Message {
    IncrementPressed,
}

impl Application for RustGuiApp {
    type Executor = Executor;
    type Message = Message;
    type Flags = ();

    fn new(_flags: ()) -> (Self, Command<Self::Message>) {
        (
            RustGuiApp {
                count: 0,
                button_state: button::State::new(),
            },
            Command::none(),
        )
    }
    
    // 设置窗口标题
    fn title(&self) -> String {
        String::from("Rust GUI Example")
    }

    fn update(&mut self, message: Self::Message) -> Command<Self::Message> {
        if let Message::IncrementPressed = message {
            self.count += 1;
        }
        Command::none()
    }

    fn view(&mut self) -> Element<Self::Message> {
        let button = Button::new(&mut self.button_state, Text::new("Increment"))
            .on_press(Message::IncrementPressed);

        //    添加文字和一些你想加的东西
        Column::new()
            .push(Text::new("Hello, Rust GUI!").size(50))
            .push(Text::new(self.count.to_string()).size(50))
            .push(button)
            .into()
    }

    fn subscription(&self) -> Subscription<Self::Message> {
        Subscription::none()
    }
}

fn main() -> iced::Result {
    RustGuiApp::run(Settings::default())
}

最后使用命令运行

bash 复制代码
cargo run

运行效果展示,还是挺不错滴

相关推荐
hummhumm10 分钟前
第27章 汇编语言--- 设备驱动开发基础
开发语言·汇编·后端·程序设计·设备驱动·高级语言·低级语言
佐咖18 分钟前
C++STL中常用的排序算法:sort、random_shuffle、merge和reverse(附C++代码)
开发语言·c++·排序算法
多多*43 分钟前
后端技术选型 sa-token校验学习 下 结合项目学习 后端鉴权
java·开发语言·前端·学习·算法·bootstrap·intellij-idea
HHppGo44 分钟前
java_单例设计模式
java·开发语言·设计模式
喵手1 小时前
Java中合并多个对象的List数据详解
java·开发语言·list
qq_441996051 小时前
Iterator 与 ListIterator 的区别
开发语言·windows·python
计算机小混子2 小时前
C++实现设计模式---单例模式 (Singleton)
开发语言·c++·单例模式
Dyan_csdn2 小时前
【Python项目】基于自适应SVM电影评价倾向性分析系统
开发语言·python
Linux520小飞鱼2 小时前
Go语言的语法糖
开发语言·后端·golang
SomeB1oody2 小时前
【Rust自学】11.9. 单元测试
开发语言·后端·rust·单元测试