当前位置: 首页 > 软件库 > 程序开发 > GUI开发框架 >

vgtk

Rust 实现的桌面 UI 框架
授权协议 GPL
开发语言 Rust
所属分类 程序开发、 GUI开发框架
软件类型 开源软件
地区 不详
投 递 者 卢志强
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

vgtk 是 Rust 编写的声明式桌面 UI 框架,内置了 GTK 和 Gtk-rs。

示例

use vgtk::{ext::*, gtk, run, Component, UpdateAction, VNode};
use vgtk::lib::{gtk::*, gio::ApplicationFlags};

#[derive(Clone, Default, Debug)]
struct Model {
    counter: usize,
}

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

impl Component for Model {
   type Message = Message;
   type Properties = ();

   fn update(&mut self, message: Message) -> UpdateAction<Self> {
       match message {
           Message::Inc => {
               self.counter += 1;
               UpdateAction::Render
           }
           Message::Exit => {
               vgtk::quit();
               UpdateAction::None
           }
       }
   }

   fn view(&self) -> VNode<Model> {
       gtk! {
           <Application::new_unwrap(None, ApplicationFlags::empty())>
               <Window border_width=20 on destroy=|_| Message::Exit>
                   <HeaderBar title="inc!" show_close_button=true />
                   <Box spacing=10 halign=Align::Center>
                       <Label label=self.counter.to_string() />
                       <Button label="inc!" image="add" always_show_image=true
                               on clicked=|_| Message::Inc />
                   </Box>
               </Window>
           </Application>
       }
   }
}

fn main() {
   std::process::exit(run::<Model>());
}

特性

  •  Elm 架构Redux 和 Yew 启发,采用了简洁、实用的组件模型 
  • 采用了一种声明式 DSL,用于组合受 React 和 JSX 启发的 GTK 小部件,使用虚拟“DOM”差异进行有效更新
  • 完全跨平台,具有适用于 Linux、Windows 和 macOS 的原生外观
  • 无需依赖嵌入式浏览器引擎
  • 基于 Rust 的Future构建,使用 GLib 的事件循环,提供了与 GTK 事件模型干净集成的 async/await
 相关资料
  • GNOME Photo Frame 是 GNOME 桌面的一个小应用工具,用来显示一个相框,相框中的照片可以从本地文件夹以及网络相册中加载。

  • 本文向大家介绍Android实现定制桌面的方法,包括了Android实现定制桌面的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现定制桌面的方法。分享给大家供大家参考。具体如下: launcher也就是我们的Home,可以简单地把它理解为一个简化的linux GUI。作为一个GUI它首先必须完成它最本分的功能,就是它必须能提供对所有应用程序(CATEGORY_LAUN

  • 本文向大家介绍java实现远程桌面的实例代码,包括了java实现远程桌面的实例代码的使用技巧和注意事项,需要的朋友参考一下 java实现远程桌面的实例代码 控制端将鼠标事件传递到服务端 服务端拿到鼠标事件之后传输到客户端 客户端拿到鼠标事件之后,通过robot类即可完成,并且截屏将图片发给服务器,服务器再发给控制端 被我简化之后得到 //远程控制原理讲解 //分为server端和client端,

  • 本文向大家介绍在vue+element ui框架里实现lodash的debounce防抖,包括了在vue+element ui框架里实现lodash的debounce防抖的使用技巧和注意事项,需要的朋友参考一下 事情起因在:我使用element ui框架里的远程搜索框,在单选时,组件内部已经做了防抖,query是在一段时间内的字符串。但是在多选时,并没有做防抖,而是每输入一个字符都要向后台发一次请

  • 本文向大家介绍JavaScript实现模仿桌面窗口的方法,包括了JavaScript实现模仿桌面窗口的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现模仿桌面窗口的方法。分享给大家供大家参考。具体如下: 这里使用JS模仿了桌面窗口的移动、八个方向的缩放、最小化、最大化和关闭,以及 双击缩小放大窗口、改变窗口大小的预览效果等功能。 希望本文所述对大家的javasc

  • 本文向大家介绍python实现桌面壁纸切换功能,包括了python实现桌面壁纸切换功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现桌面壁纸切换功能的具体实现方法,供大家参考,具体内容如下 大体分为两个部分 一、利用爬虫爬取壁纸 第一部分爬取图片url地址并且下载至本地 爬虫针对 http://image.so.com/ 【360壁纸写的】,如果要更换url地址自己

  • 本文向大家介绍基于Vant UI框架实现时间段选择器,包括了基于Vant UI框架实现时间段选择器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Vant UI框架实现时间段选择器的具体代码,供大家参考,具体内容如下 组件代码如下: 调用demo UI示例 API:注意红色划掉的没有实现 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。