rust語言 (1.88) egui (0.32.1) 學習筆記(逐行注釋)(一)基本代碼

Cargo.toml

[dependencies]
eframe = "0.32.1"
egui = "0.32.1"

?啟動函數一:run_simple_native

  • 簡化版入口函數,適用于快速原型開發
  • 僅需提供應用標題和 UI 渲染閉包即可運行
  • 典型使用場景:單面板工具、簡單演示程序
// 導入egui核心庫和eframe框架(eframe是egui的本地窗口封裝)
use eframe::egui;// 主函數返回Result類型以處理可能的錯誤
fn main() -> eframe::Result<()> {// 配置原生窗口參數let options = eframe::NativeOptions::default();eframe::run_simple_native("My egui App", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {ui.heading("Hello from egui 0.32.1!");           // 添加一級標題ui.label("This is a simple window in Ubuntu.");  // 添加普通文本標簽});})
}

啟動函數二:?run_native

  • 完整功能入口,支持自定義應用生命周期管理
  • 需要實現eframe::App trait的結構體
  • 典型使用場景:復雜應用、需要持久化狀態的項目
// 導入egui核心庫和eframe框架(eframe是egui的本地窗口封裝)
use eframe::egui;// 主函數返回Result類型以處理可能的錯誤
fn main() -> Result<(), eframe::Error> {let options = eframe::NativeOptions {   // 配置窗口的初始參數// 設置窗口初始大小為400x300像素viewport: egui::ViewportBuilder::default().with_inner_size([400.0, 300.0]),..Default::default()                // 其他參數保持默認值};// 啟動原生窗口應用eframe::run_native("My egui App",                                // 窗口標題options,                                      // 傳入配置選項Box::new(|_cc| Ok(Box::<MyApp>::default())),  // 創建應用實例的閉包,_cc包含創建上下文信息)
}// 定義應用的主要結構體
struct MyApp{}// 為MyApp實現Default trait以提供默認初始化
impl Default for MyApp {fn default() -> Self {Self                // 返回空結構體實例}
}// 為MyApp實現eframe::App trait定義應用行為
impl eframe::App for MyApp {// 每幀調用的更新函數fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {egui::CentralPanel::default().show(ctx, |ui| {       // 創建中央面板(egui的主要布局組件)ui.heading("Hello from egui 0.32.1!");           // 添加一級標題ui.label("This is a simple window in Ubuntu.");  // 添加普通文本標簽});}
}

選擇建議

  1. 優先選擇run_simple_native當:

    • 開發臨時性工具
    • 無需復雜狀態管理
    • 快速驗證UI設計
  2. 必須使用run_native當:

    • 需要保存用戶配置
    • 實現多窗口交互
    • 處理文件I/O等系統操作

兩者底層均基于相同的egui渲染引擎,性能差異可以忽略。對于WebAssembly目標,對應存在run_simple_webrun_web變體。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

離線優先與沖突解決:ABP vNext + PWA 的邊緣同步

&#x1f6f0;? 離線優先與沖突解決&#xff1a;ABP vNext PWA 的邊緣同步 &#x1f4da; 目錄&#x1f6f0;? 離線優先與沖突解決&#xff1a;ABP vNext PWA 的邊緣同步0. 環境 &#x1f680;1. 場景與目標&#xff08;痛點→指標&#xff09;&#x1f3af;2. 架構與時序 …

Slither 審計自己寫的智能合約

作為區塊鏈開發者&#xff0c;寫完合約之后最重要的一步就是 檢查代碼有沒有漏洞。一旦部署到鏈上出了問題&#xff0c;不僅修復麻煩&#xff0c;還可能直接造成資金損失。 Slither 是一款非常好用的自動化審計工具&#xff0c;可以幫你快速找出大部分常見風險。這篇文章專門講…

Python萬里長征6(非教程)pandas篩選數據三基礎、三核心、三高級

文章目錄一、背景二、布爾索引2.1 總結三、進階核心用法&#xff08;實用高效&#xff09;3.1 多條件組合3.2 字符串表達式&#xff08;類似SQL&#xff09;3.3 針對字符串的正則匹配四、高級方法&#xff08;依賴基礎&#xff09;4.1 函數應用&#xff08;如apply()或lambda&a…

阿里云上部署nuxt開發的項目(SSG和SSR混合渲染)

1.項目說明及配置 // nuxt.config.ts export default defineNuxtConfig({// ... 其他配置// Nitro 引擎讓你可以非常精細地為每個頁面定義渲染策略nitro: {// 預設取決于你的部署平臺,例如 vercel, netlify, static 等,或者node-serverpreset: vercel, // 這里以 Vercel 為例…

RWA加密金融高峰論壇星鏈品牌全球發布 —— 穩定幣與Web3的香港新篇章

隨著全球數字金融不斷演進&#xff0c;穩定幣&#xff08;Stablecoin&#xff09;與真實世界資產&#xff08;RWA&#xff09;已成為連接傳統金融與Web3世界的核心通道。行業投研報告預計&#xff0c;RWA市場規模將在未來五年突破10萬億美元&#xff0c;而穩定幣正加速進入跨境…

玩轉Vue3高級特性:Teleport、Suspense與自定義渲染

玩轉Vue3高級特性&#xff1a;Teleport、Suspense與自定義渲染 掌握Vue3革命性渲染特性&#xff0c;構建更靈活強大的前端應用 一、高級渲染特性全景概覽 Vue3引入了三大革命性渲染特性&#xff0c;徹底改變了開發體驗&#xff1a; 特性 解決的問題 典型應用場景 Teleport DOM結…

Qt/C++開發監控GB28181系統/錄像文件回放/自動播放下一個錄像文件/倍速回放/錄像文件下載

一、前言說明 之前錄像文件的回放功能已經是好的&#xff0c;后面用戶提出來一個新的合理的需求&#xff0c;那就是播放完上一個錄像文件&#xff0c;希望自動播放下一個文件&#xff0c;之前是播放完成后就關閉了&#xff0c;需要手動雙擊錄像文件才會再次播放&#xff0c;這…

Kali Linux 發布重構版Vagrant鏡像:通過命令行快速部署預配置DebOS虛擬機

Kali Linux團隊宣布對其Vagrant鏡像構建流程進行重大升級&#xff0c;通過改用DebOS系統替代原有的HashiCorp Packer工具&#xff0c;顯著簡化了預配置虛擬機的開發與部署流程。此次更新還附帶實用速查表&#xff0c;幫助安全從業者快速上手。技術架構革新Vagrant box是可通過命…

關于鏈式二叉樹的幾道OJ題目

今天筆者帶領讀者做幾道鏈式二叉樹OJ題目&#xff0c;希望讀者和筆者一起思考&#xff01; 1.965. 單值二叉樹 - 力扣&#xff08;LeetCode&#xff09; 這道題思路不難想&#xff0c;首先知道單值二叉樹的定義&#xff1a;所有結點的值都相同&#xff0c;傳入的是第一個根節…

【ECharts】2. ECharts 性能優化

動態(按需)加載異步子組件 之前說過 ECharts 如何封裝&#xff0c;今天來講一講 ECharts 如何做性能優化。 對于之前 ECharts 的封裝子組件&#xff0c;我們可以使用 component 動態組件的方式進行渲染&#xff0c;并傳參。 并且使用 import 動態導入搭配 defineAsyncCompon…

如何創建自己的 Minecraft 世界

步驟1&#xff1a;準備虛擬服務器運行以下命令來更新系統的軟件包列表并應用所有待處理的升級&#xff1a;sudo apt update sudo apt upgrade -y您的系統已更新完畢&#xff0c;您已準備好進行下一步。第 2 步&#xff1a;安裝依賴項并創建安全用戶LinuxGSM 需要一些軟件才能正…

vue中監聽頁面滾動位置

vue中監聽頁面滾動位置問題描述實現代碼1. 獲取頁面被卷起的高度2. 監聽滾動事件問題描述 頁面滾動到指定位置時&#xff0c;展示側邊欄導航。 實現代碼 1. 獲取頁面被卷起的高度 使用 e.target.scrollTop可以獲取到頁面向上滾動了多少像素&#xff0c;代碼如下&#xff1a;…

docker:compose

docker三劍客&#xff1a;compose、swarm、machinemachine是在不同環境&#xff08;不同的操作系統平臺上安裝&#xff09;下部署docker的compose是做容器編排的swarm是做docker集群管理的Compose 簡介口任務&#xff08; task &#xff09; &#xff1a; 一個容器被稱為一個任…

GaussDB 數據庫架構師修煉(十八) SQL引擎-計劃管理-SQL PATCH

1 業務背景GaussDB的優化器生成計劃不優的情況下&#xff0c;對DBA調優過程中不對業務sql修改場景下&#xff0c;提供3種計劃管理&#xff0c;分別為plan hint,sql patch,spm。2 sql patch的使用場景在發現查詢語句的執行計劃、執行方式未達預期的場景下&#xff0c;可以通過創…

函數式編程從入門到精通

1.概述1.1為什么學&#xff1f;* 能夠看懂公司里的代碼 * 大數量下處理集合效率高 * 代碼可讀性高 * 消滅嵌套地獄//查詢未成年作家評分在70分以上的書籍&#xff0c;由于流的影響所以作家和書籍可能會重復出現&#xff0c;所以要去重public void test1() {List<Book> bo…

Overleaf 中文報錯和中文不顯示問題的解決方案

Overleaf是一個很方便的在線latex編輯工具。但在最初使用Overleaf的時候&#xff0c;是不是有很多小伙伴會遇到模板中中文報錯或者中文不顯示的問題呢&#xff1f; 本文將帶你一步步解決這個問題~ 中文報錯 在點擊重新編譯按鈕后&#xff0c;中文報錯問題一般會有如下圖紅框顯示…

前后端聯調場景以及可能會遇到的問題

一、異地和在一起辦公的方式 首先&#xff0c;在一起辦公&#xff08;同局域網&#xff09;的情況&#xff0c;最常用的應該是直接使用后端的局域網 IP 進行聯調&#xff0c;因為同一網絡內設備可以直接通信。步驟方面&#xff0c;需要后端提供 IP 和端口&#xff0c;前端配置…

【T113自制板卡】1 - 原理圖說明

文章目錄1、前言2、板卡資源總覽3、電源3.1、板卡供電3.2、電源方案4、OTG接口5、調試串口6、用戶LED7、FLASH8、按鍵9、BLE MESH10、Wi-Fi11、MIC12、喇叭接口13、MIPI接口1、前言 這幾天跟著小智學長的課程畫了一塊t113的板子。本文將描述該板卡的硬件說明。 2、板卡資源總…

WiFi有網絡但是電腦連不上網是怎么回事?該怎么解決?

有時候&#xff0c;咱們用電腦上網&#xff0c;打開WiFi一看&#xff0c;信號滿格&#xff0c;狀態欄顯示已連接&#xff0c;本來想著可以愉快地看個番、查個資料、玩個游戲了&#xff0c;結果一打開瀏覽器&#xff0c;直接完犢子了&#xff0c;網頁都打不開。這時候再看狀態&a…

【golang】制作linux環境+golang的Dockerfile | 如何下載golang鏡像源

一、關于如何下載docker images 這里需要大家自行科學上網如果沒有話&#xff0c;下面可以使用我自行打包的golang 的docker images 注意科學上網要開啟TUN模式二、golang鏡像源 1、阿里云公開鏡像 如果找不到golang包的小伙伴可以使用我的公開阿里鏡像docker pull registry.cn…