iced 入门一

【一起学Rust | 框架篇 | iced框架】rust原生跨平台GUI框架——iced Iced是一个我较为感兴趣的GUI框架,其开发方式对我我这种学习了Vue的人来说相当友好,且配和Rust的特点,已经是很舒服了。此外它颜值也挺高,这就是我学习它的理由。Iced的特点有简单易用,有一系列内置API; 类型安全,有一套交互编程模型; 跨平台(支持Windows,Mac,Linux和Web);响应式布局;基于widgets ;支持自定义widgets ;还有其他特性 阅读详情
在这里插入图片描述

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。
📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看
📙Java并发编程系列,设计模式系列、go web开发框架 系列正在发展中,喜欢Java,GoLang,Rust,的朋友们可以关注一下哦!


简介

本教程的目标是创建一个简单的购物清单应用程序。我们希望允许添加和删除购物清单中的项目。

在编写代码之前,我们必须首先了解 Iced 构建的结构:Elm 架构。它是 GUI 库使用的架构,最初用于 Elm 编程语言。它的核心原则很简单。它围绕三个概念构建:模型、视图和更新。

  • 模型,应用程序的状态。这是将根据用户交互等进行更新的所有数据。它将用于确定我们希望如何呈现 UI。在本教程中,我们将此称为模型或应用程序的状态。
  • 视图,显示 UI 的函数。
  • 更新,可以更新状态的函数。只有在此函数中,才能更新应用程序的状态。

创建新的 Iced 应用程序

首先,我们将用cargo开始一个新建项目。

cargo new iced-t

现在,到新创建的文件夹中的文件,并将 Iced 添加为依赖项。cargo.toml

[package]
name = "iced-t"
version = "0.1.0"
edition = "2021"

[dependencies]
iced = {version = "0.12.1"}

现在,在应用程序的文件夹中,我们会将这些导入添加到您的文件中。我们稍后会解释他们做什么。src/main.rs

use iced::{Element, Sandbox, Settings};
use iced::widget::text;

现在,我们将创建最基本的应用程序。首先,我们必须创建应用程序的主要结构。我们称之为“GroceryList”。现在,我们将其设为空。

struct GroceryList {}

我们还将创建一个枚举,该枚举也将为空。这将用于指导我们的应用程序如何更新我们的状态。我们稍后会详细了解这一点,但现在,让我们创建一个名为“Message”的枚举

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

现在我们将实现该特征。这是我们结构体的一个重要特征。我们还将 our 定义为处理应用程序更新的枚举。我们将其写为 .SandboxGroceryListMessagetype Message = Message

impl Sandbox for GroceryList {
	type Message = Message;
	
	/* Initialize your app */
	fn new() -> GroceryList {
		Self {}
	}
	
	/**
	* The title of the window. It will show up on the top of your application window.
	*/
	fn title(&self) -> String {
		String::from("Grocery List App")
	}
	
	fn update(&mut self, message: Self::Message) {
		// Update the state of your app
	}
	
	fn view(&self) -> Element<Self::Message> {
		text("This is where you will show the view of your app")
		.into()
	}
}

最后,我们将把我们的结构添加到函数中并运行它。GroceryListmain

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

为了启动我们的应用程序,我们正在实现一个名为“Sandbox”的特征。正如我之前所说,该特征对于运行我们的应用程序很重要。它允许我们使用我们的结构作为状态来启动我们的应用程序。

该特征是另一个称为“Application”的特征的简化版本。 主要用于制作演示或简单的应用程序,因此得名“Sandbox”。

Sandbox new GroceryList

该方法用于初始化我们的 .由于我们对此应用程序没有任何状态,因此此结构为空(目前)。

title

该方法应返回我们选择的字符串。此字符串将用作窗口的标题。对于我的操作系统,标题显示在窗口顶部。您可以将此字符串更改为要显示为标题的任何内容,它对我们的应用程序无关紧要。

update

该方法对我们的应用非常重要。如果你还记得我对 Elm 架构的解释,update 方法用于更新我们应用程序的状态。对应用程序使用的数据进行的所有更改都必须通过更新方法。现在,我们将它留空。

view into Element

方法。我们将在此处显示应用程序的 UI。在这里,我们使用的是之前导入的“文本”小部件。它将显示传入其中的字符串。我们运行该方法将我们的小部件转换为 Iced 。

运行我们的应用程序

为了运行我们的应用程序,我们将像任何其他 Rust 项目一样运行它。在文件夹的根目录中,运行以下命令:

cargo run --release

您应该看到类似于以下内容的内容:

在这里插入图片描述

hello word

我们正在显示文本,但它看起来非常简单。让我们的 UI 更具吸引力。

首先,让我们更新我们的导入。我们将添加一个新的小部件。

use iced::{alignment, Element, Length, Sandbox, Settings};
use iced::widget::{container, text};

接下来,让我们改变我们的方法。view

fn vie
Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。iced的基本逻辑是:UI交互产生消息message,message传递给后台的update,在这个函数中编写逻辑,然后通过View函数更新UI。下面我们将通过举例来说明iced如何显示一个窗口,以及如何在窗口上显示中文。 阅读详情

相关推荐

Rust UI开发(五):iced中如何进行页面布局(pick_list的使用)?(串口调试助手)

iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。这是一个系列博文,本文是第五篇,前四篇链接:1、2、3、4、本篇是系列第五篇,本篇主要说明如何制作关于“串口调试助手”的界面布局,包括菜单栏的创建、UI主界面picklist的使用、以及如何排布。实际效果预览:界面分为两个部分,一个是菜单栏,暂时设置了四个主菜单项:1、文件:新建、打开、保存、关闭2、通讯:获取端口、连接、断开、参数3、工具:CRC16、字符转换。

用沸腾的热血,支付我们的人生吧! 3640

<iced><rust><GUI>基于rust的GUI库iced的学习(00):一个典型的iced窗口的实现

本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发。iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动。本合集是基于新版本的关于分部件(widget)的使用介绍,包括源代码介绍、实例使用等。本专栏系列是关于iced的相关介绍,同时也是一个学习过程的记录,如果你也对iced感兴趣,欢迎在评论区交流!

2505_90729871的博客 754

Rust UI开发(二):iced中如何为窗口添加icon图标

iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。本篇是系列第二篇,主要解决一个问题,就是为窗口添加图标icon。注:窗口图标在其他语言中,应该是非常容易实现的,但iced是一个发展中的库,很多方面还不成熟,我在用iced自己的方法测试window图标,花了很多时间,效果还不好,所以特意记录此篇,一来做个记录,方便以后回看,二来给其他有这方面问题的朋友做个参考。icon参数是一个枚举,枚举类型是。可以看到,这里Icon的数据是rgba数据,是一种图像的数据类型。

用沸腾的热血,支付我们的人生吧! 2565

Rust UI开发(四):iced中如何添加菜单栏(串口调试助手)

本篇主要关注一个问题,就是菜单栏的创建,iced库中并没有包含menu部件,需要用到iced_aw库。

用沸腾的热血,支付我们的人生吧! 3695

RustGUI学习(iced/iced_aw)之扩展小部件(十七):如何使用colorpicker部件来选择颜色?

本系列是iced的小部件应用介绍系列,主要介绍iced、iced_aw两个库中涉及的各种小部件的使用及实例演示。本文所介绍的是color_picker,即颜色选择器,图示如下:

用沸腾的热血,支付我们的人生吧! 1849

Polymarket链上预测市场自动化交易代理开发实战指南

自动化交易代理是量化交易的核心工具,它通过预设的算法规则,自动执行市场分析、决策与下单操作,旨在提升交易效率与纪律性。其技术原理通常涉及实时数据获取、策略引擎计算、交易执行与风险管理等模块的协同工作。在区块链与DeFi领域,这类代理的价值尤为凸显,能够高效处理链上合约交互,捕捉去中心化市场的套利机会。具体到应用场景,链上预测市场如Polymarket,为自动化策略提供了丰富的博弈标的。本文以Polymarket交易代理项目为例,深入剖析其基于Node.js与ethers.js的技术栈实现,详解从环境配置、策

weixin_42533910的博客 581

《R语言实战》第八章之回归分析图形

回归分析图形 回归分析分为简单回归与复杂回归 1 : 简单线性回归即:模型中只包含一个因变量和一个自变量,有时候也会包含多项式, 这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性回归,而且多元线性回归中也可以包含多项式以及交互项 (1)在进行多远回归分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性回归简单地就是OLS回归,通过lm和

Strawberry_Ya的博客 1834

R语言分布式滞后非线性模型DLNM实战:空气污染与健康数据的动态效应可视化与政策启示

本文详细介绍了R语言中分布式滞后非线性模型(DLNM)的应用,特别关注空气污染与健康数据的动态效应可视化。通过dlnm包实现PM2.5等污染物的滞后效应分析,提供从数据预处理、模型构建到结果可视化的完整流程,并探讨了其在公共卫生政策制定中的实际应用价值。

weixin_29079643的博客 514

告别商业软件?实测用gnina(CNN打分版)做分子对接:从安装到跑通第一个案例

本文详细介绍了基于卷积神经网络(CNN)的开源分子对接工具gnina的安装与实战应用。从环境配置、编译安装到运行第一个COVID-19主蛋白酶抑制剂对接案例,全面解析了这款替代商业软件的强大功能,特别适合预算有限的研究团队进行药物发现和虚拟筛选。

weixin_42522320的博客 255

Matlab实战:用递归最小二乘法(RLS)搞定动态系统参数辨识(附完整代码)

本文通过Matlab实战,详细介绍了如何利用递归最小二乘法(RLS)进行动态系统参数辨识。文章从理论优势切入,提供了完整的仿真数据生成、RLS算法核心实现代码,并对参数收敛过程、预测误差及不同遗忘因子的影响进行了可视化分析与性能评估,为工程实践提供了清晰的指南。

weixin_29035405的博客 503

RAG的“诊断艺术”:从测试集结果倒追根源,精准优化检索、排序与生成

当RAG应用给出一个糟糕的答案时,开发者的第一反应可能是:“我的Prompt写得不够好?”这种基于“感觉”的猜测往往是低效的。通过构建一个包含黄金上下文信息的测试集,我们可以像一位经验丰富的医生一样,对RAG系统的各个“器官”进行独立的“健康检查”。一个用于RAG诊断的测试集,除了问题和答案,还需要包含中间环节的“黄金标准”。如果你的RAG流程包含Re-ranker,那么在评估完初期的召回后,需要单独评估Re-ranker的效果。RAG的优化是一个持续的过程,应该形成一个闭环。的文档块尽可能多地召回。

kakaZhui的博客 153

RepHead一种重参数化检测头用于提升YOLOv8在困难样本上的检测性能

在目标检测任务中,困难样本通常是指那些由于特殊背景、遮挡、低分辨率或极度小物体等因素,导致模型难以识别的样本。这类样本对传统YOLO系列模型的影响较大,常常造成漏检或误检。重参数化(Reparameterization)是一种深度学习中常用的技术,旨在通过对网络参数的变换,使得模型在训练过程中能够更加灵活地适应不同的数据特征。通过对原始网络结构的参数进行重新表达,能够引导模型在训练过程中学习到更加有效的特征。本文详细介绍了YOLOv8的改进——RepHead检测头,并深入分析了它在解决困难样本检测中的应用。

博客 1209

2023华为od机试【最小循环子数组】C++

2023华为od机试【最小循环子数组】C++ 给定一个由若干整数组成的数组nums,请检查数组是否是由某个子数组重复循环拼接而成,请输出这个最小的子数组。

MISAYAONE的博客 2185

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: k8s 标签和选择器
下一篇: shell编程
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5342粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过去日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值