[Rust GUI]0.10.0版本iced代码示例 - progress_bar

这篇具有很好参考价值的文章主要介绍了[Rust GUI]0.10.0版本iced代码示例 - progress_bar。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

-1 字体支持

iced0.10.0 仅支持指定系统内置字体(iced默认字体中文会乱码)
iced0.10.0 手动加载字体的功能已经砍了,想手动加载就用0.9.0版本,文档0.9.0版本
想显示中文则需要运行在一个自带字体的Windows系统上。而且这个字体最好不要钱。
(Windows闲着没事不会给你放免费字体进去,都是微软自己买的,只能微软用)

如果选用的字体用户的电脑里恰好没有,iced就直接乱码给你看。
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced

0、准备

1、安装Visual Studio C++ Build tools

1、访问微软官网下载生成工具
2、勾选这个
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced
3、对比勾选细节
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced
4、点击安装
5、安装完成
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced
6、关闭Visual Studio Installer
7、重启电脑

2、安装Rust

访问Rust官网下载 RUSTUP-INIT.EXE(64位)
在 PowerShell 中运行$ENV:RUSTUP_DIST_SERVER='https://mirrors.ustc.edu.cn/rust-static';$ENV:RUSTUP_UPDATE_ROOT='https://mirrors.ustc.edu.cn/rust-static/rustup';.\rustup-init.exe,输入1并回车
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced

3、设置cargo镜像

运行powershell -command ii (where.exe cargo).substring(0,(where.exe cargo).Length-'\bin\cargo.exe'.Length)
.cargo目录下新建文件,名为config,无后缀名,保存为以下内容

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

4、安装VSCode

访问这个👉链接:如何下载安装VSCode
安装插件:简体中文、rust-analyzer(中英双语版)

5、下载并安装字体文件

下载思源黑体:下载链接
双击 SourceHanSansSC-Regular.otf 文件,点击安装

0、编程

1、使用cargo创建项目

运行cargo new iced-progress_bar;cd iced-progress_bar

2、添加板条箱iced0.10.0

运行cargo add iced@0.10.0

3、使用VSCode打开项目

运行code .
选中.\iced-progress_bar\src\main.rs激活插件,等待插件加载完毕。

4、运行

运行cargo run,等待编译完成,正常输出Hello, world!
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced

5、编辑.\iced-progress_bar\src\main.rs

5.1、use

编辑第一部分,使用use关键字添加板条箱iced

// https://blog.csdn.net/qq_39124701/article/details/132662186
use iced::font::{Family, Weight};
use iced::widget::{button, column, progress_bar, slider, text};
use iced::{window, Element, Font, Sandbox, Settings};

5.2、Progress

编辑第二部分,添加一个结构体

#[derive(Default)]
struct Progress {
    value: f32,
}

5.3、Message

编辑第二部分,添加一个枚举

#[derive(Debug, Clone, Copy)]
enum Message {
    SliderChanged(f32),
    RunCommand,
}

[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced

5.4、impl

5.4.1、编辑第三部分,定义方法

impl Sandbox for Progress {}

5.4.2、鼠标选中该行代码,点击灯泡图标,选择Implement missing members并保存
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced
5.4.3、将会自动生成如下代码

impl Sandbox for Progress {
    type Message;

    fn new() -> Self {
        todo!()
    }

    fn title(&self) -> String {
        todo!()
    }

    fn update(&mut self, message: Self::Message) {
        todo!()
    }

    fn view(&self) -> Element<'_, Self::Message> {
        todo!()
    }
}

5.4.4、type Message
type Message;改为type Message = Message;
5.4.5、new()

    fn new() -> Self {
        todo!()
    }

改为

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

5.4.6、title()

    fn title(&self) -> String {
        todo!()
    }

改为

    fn title(&self) -> String {
        String::from("进度条 - Iced")
    }

5.4.7、update()

    fn update(&mut self, message: Self::Message) {
        todo!()
    }

改为

    fn update(&mut self, message: Message) {
        match message {
            Message::SliderChanged(x) => self.value = x,
            Message::RunCommand => {
                std::process::Command::new("cmd")
                    .args(&["/C", "start", "", "https://blog.csdn.net/qq_39124701/article/details/132662186"])
                    .spawn()
                    .expect("Failed to open URL");
            }
        }
    }

5.4.8、view()

    fn view(&self) -> Element<'_, Self::Message> {
        todo!()
    }

改为

    fn view(&self) -> Element<Message> {
        // https://blog.csdn.net/qq_39124701/article/details/132662186
        column![
            text(self.value).size(50),
            progress_bar(0.0..=100.0, self.value),
            slider(0.0..=100.0, self.value, Message::SliderChanged).step(0.01),
            button("重置为零").on_press(Message::SliderChanged(0.0)),
            button("作者:CSDN 三巧").on_press(Message::RunCommand),
        ]
        .padding(20)
        .spacing(5)
        .into()
    }

5.5、main

fn main() {
    println!("Hello, world!");
}

改为

pub fn main() -> iced::Result {
    Progress::run(Settings {
        window: window::Settings {
            size: (500, 500),
            ..Default::default()
        },
        default_font: Font {
            family: Family::Name("思源黑体"),
            weight: Weight::Normal,
            ..Default::default()
        },
        ..Default::default()
    })
}

6、运行

运行cargo run,等待编译完成,显示窗口
[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced
滑动滑块,数字变化,进度条变化
点击重置为零按钮,数字归零,进度条归零

7、构建

cargo build
生成位置:.\iced-progress_bar\target\debug\iced-progress_bar.exe

8、exe运行有黑框?

编辑.\iced-progress_bar\src\main.rs,在第一行添加#![windows_subsystem = "windows"]后重新构建即可

9、其他

iced官网
crates.io中的iced
Github上的iced



[Rust GUI]0.10.0版本iced代码示例 - progress_bar,rust,开发语言,后端,windows,gui,iced文章来源地址https://www.toymoban.com/news/detail-701056.html

到了这里,关于[Rust GUI]0.10.0版本iced代码示例 - progress_bar的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第四篇,前三篇链接: 1、Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符 2、Rust UI开发(二):iced中如何为窗口添加icon图标 3、Rust

    2024年02月03日
    浏览(83)
  • Rust UI开发(二):iced中如何为窗口添加icon图标

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 想要了解如何构建简单窗口的可以看本系列的第一篇: Rust UI开发:使用iced构建UI时,如何在界面显示中文字符 本篇是系列第二篇,主要解决一个问题,就是为窗口添加图标ic

    2024年02月04日
    浏览(58)
  • Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。   iced的基本逻辑是: UI交互产生消息message,message传递给后台的update,在这个函数中编写逻辑,然后通过View函数更新UI。 Take the result of our view logic and layout its widgets. 获取视图逻

    2024年02月03日
    浏览(68)
  • Rust UI开发(三):iced如何打开图片(对话框)并在窗口显示图片?

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第三篇,前两篇的链接: 1、Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符 2、Rust UI开发(二):iced中如何为窗口添加icon图标 本篇是

    2024年02月04日
    浏览(85)
  • 听GPT 讲Rust源代码--library/std(10)

    题图来自 Rust Development Roadmap [1] 在Rust源代码的 rust/library/std/src/sys/windows/c.rs 文件中,主要定义了Rust对于Windows操作系统的系统调用接口。该文件定义了各种Windows特定的结构体、枚举和常量,以支持与操作系统的交互。 以下是对每个结构体的详细介绍: ip_mreq : 该结构体用于表

    2024年02月06日
    浏览(40)
  • 10天玩转Python第9天:python 面向对象 全面详解与代码示例

    今日内容 异常 模块和包 导入模块(导包) if __name__ == \\\"__main__\\\": Unitest 框架的学习 了解, 基本组成 异常传递[了解] 导入模块的语法 方式一 方式二 方式三 [了解] 基本不用 模块的查找顺序 __name__  的作用 代码练习 包(package) 介绍 框架 什么是 UnitTest 框架? 为什么使用 UnitTest 框架

    2024年02月04日
    浏览(45)
  • 10天玩转Python第2天:python判断语句基础示例全面详解与代码练习

    ​ 数据类型转换: 数据本来的类型不是我们计算使用想要的类型 int() 将其他类型转换为 int 类型(小数, 整数类型的字符串) float() 将其他类型转换为 float 类型(整数, 数字类型的字符串) str() 将其他类型转换为 str 类型(任意类型)​ 函数: 作用 语法 type(变量) 可以获取变量的数据

    2024年02月04日
    浏览(55)
  • 10天玩转Python第6天:python 函数和面向对象基础 全面详解与代码示例

    不定长参数补充-函数调用时的拆包 匿名函数 语法 代码 练习 匿名函数作为函数的参数 - 列表中的字典排序 字符串比大小 基本的介绍 面向过程 关注的是 具体步骤的实现, 所有的功能都自己书写 亲力亲为 定义一个个函数, 最终按照顺序调用函数 面向对象 关注的是结果, 谁

    2024年02月04日
    浏览(59)
  • 【一起学Rust | 框架篇 | Frui框架】rust一个对开发者友好的GUI框架——Frui

    本次内容接上回《rust原生跨平台GUI框架——iced》,最近突然涌现出多个Rust的UI框架,真实令人兴奋,同时也突出了Rust的勃然生机,我将尽量为大家介绍Rust领域的UI框架,带大家体验Rust领域的好玩意儿。 Frui是一个对开发者相当友好的UI框架,它使得开发者构建用户界面变得

    2024年02月01日
    浏览(39)
  • win10中 hyper-v 中搭建 docker 快速搭建一个thinkphp6 的项目 swoole 环境 websocket 示例代码

    1. 先安装docker  和docker-composer    1.1安装docker 直接使用快捷一键安装   1.2等待一分钟docker安装完成启动docker     1.3 测试docker 安装 和镜像加速    直接参考文章安装和调试  CentOS 安装 Docker | Docker 从入门到实践 2.安装php 运行环境   2.1   选用最简单 的拥有 php-fpm 和 ngin

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包