fyne 选项卡设计

devtools/2025/1/23 11:05:01/

用户界面的设计至关重要,它直接影响着用户体验。选卡设计作为一种常见的界面布局方式,能够有效地组织和展示信息,使用户能够方便快捷地浏览和操作。

Fyne 是一个用 Go 语言编写的跨平台 GUI 框架,它提供了丰富的组件和功能,使得我们可以轻松地实现各种复杂的用户界面,包括选卡设计。

二、示例代码解析

我们来看一段基于 Fyne 框架实现的包含选卡相关元素的代码示例:

go">package mainimport ("fyne.io/fyne/v2""fyne.io/fyne/v2/app""fyne.io/fyne/v2/canvas""fyne.io/fyne/v2/container""fyne.io/fyne/v2/storage""fyne.io/fyne/v2/widget"
)type data struct {name    stringlevel   stringprice   stringstatus  stringpercent string
}func main() {a := app.New()w := a.NewWindow("用户卡片点击交互")// 设置图片URLimageURL := "https://candy-circle-copy.oss-cn-qingdao.aliyuncs.com/image/2024812/imFvgJJeHTyYuKFlPrSlUvFYYbldxlna.jpg"u, _ := storage.ParseURI(imageURL)imgResource := canvas.NewImageFromURI(u)//imgResource.FillMode = canvas.ImageFillContainimgResource.SetMinSize(fyne.NewSize(100, 100))data1 := []data{{name: "用户1", level: "等级1", price: "10元", status: "在线", percent: "99%"},{name: "用户2", level: "等级2", price: "20元", status: "离线", percent: "99%"},{name: "用户3", level: "等级2", price: "20元", status: "离线", percent: "92%"},{name: "用户4", level: "等级3", price: "30元", status: "在线", percent: "89%"},}var items []fyne.CanvasObjectfor _, v := range data1 {userCard := container.NewGridWithColumns(2,imgResource,container.NewVBox(container.NewHBox(widget.NewLabel(v.name),widget.NewLabel(v.status),),container.NewHBox(widget.NewLabel(v.level),widget.NewLabel(v.percent),),widget.NewLabel(v.price),))items = append(items, userCard)}content := container.NewVBox(items...)w.SetContent(content)w.Resize(fyne.NewSize(300, 600))w.ShowAndRun()
}

效果预览
在这里插入图片描述

  1. 初始化应用和窗口
    代码开始部分创建了一个 Fyne 应用实例 a 和一个窗口实例 w,并设置了窗口的标题为“用户卡片点击交互”。这是构建 Fyne 应用的基本步骤,为后续的界面元素添加提供了容器。

  2. 加载图片资源
    通过指定图片的 URL,使用 storage.ParseURI 方法将其解析为 Fyne 能够识别的 URI 对象,然后利用 canvas.NewImageFromURI 方法创建一个图片组件 imgResource。并设置了图片的最小尺寸,以确保图片在界面中以合适的大小显示。这一步骤展示了如何在 Fyne 中加载和处理外部图片资源,为选卡设计中的视觉元素提供了支持。

  3. 数据结构和数据初始化
    定义了一个名为 data 的结构体,用于存储用户的相关信息,如姓名、等级、价格、状态和百分比。然后初始化了一个 data 类型的切片 data1,包含了多个用户的数据。这些数据将用于填充选卡中的具体内容。

  4. 创建用户卡片
    通过循环遍历 data1 切片,为每个用户创建一个用户卡片。每个卡片使用 container.NewGridWithColumns 方法创建一个两列的网格布局,左侧放置图片,右侧使用垂直布局 container.NewVBox 嵌套水平布局 container.NewHBox 来展示用户的详细信息,如姓名、状态、等级、百分比和价格。这种布局方式清晰地将用户信息分组展示,符合选卡设计中信息组织的原则。

  5. 添加卡片到界面
    将所有创建的用户卡片添加到一个 items 切片中,然后使用 container.NewVBox 将这些卡片垂直排列,并设置为窗口的内容。最后,调整窗口的大小并显示窗口。

三、选卡设计的优化与扩展

  1. 交互功能添加
    当前代码只是展示了用户卡片的静态布局,我们可以进一步添加交互功能,如点击卡片时弹出详细信息窗口或执行特定操作。可以通过为卡片添加点击事件处理函数来实现这一功能。

  2. 样式和主题定制
    Fyne 支持丰富的样式和主题定制,我们可以为用户卡片和整个界面设置不同的颜色、字体、边框等样式,以提升界面的美观度和一致性。通过创建自定义主题或使用 Fyne 提供的主题接口,可以轻松实现这一点。

  3. 动态数据更新
    在实际应用中,数据可能是动态变化的。我们可以通过监听数据的变化,实时更新用户卡片的内容,确保界面展示的信息始终是最新的。


http://www.ppmy.cn/devtools/152865.html

相关文章

Oracle审计

审计是监控选定的用户数据库操作的过程 审计的目的: 调查可疑的数据库活动: 审计可以帮助检测和跟踪潜在的 security breaches、未授权的访问尝试或其他异常行为。通过分析审计日志,可以确定可疑活动的来源、时间、频率和影响。 收集特定数…

【Day24 LeetCode】贪心Ⅱ

一、贪心Ⅱ 1、买卖股票的最佳时机 II 122 这题第一想法是使用动态规划做&#xff0c;每天有两个状态&#xff0c;持有股票和非持有股票&#xff0c;每次计算这两个状态下的最优值。 class Solution { public:int maxProfit(vector<int>& prices) {//表示当前 没有…

李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕

终端输入nvidia-smi查看cuda版本 我的是12.5&#xff0c;在网上没有找到12.5的torch&#xff0c;就安装12.1的。torch&#xff0c;torchvision&#xff0c;torchaudio版本以及python版本要对应 参考&#xff1a;https://blog.csdn.net/FengHanI/article/details/135116114 创…

EXCEL+Python搞定数据处理(第一部分:Python入门-第1章:为什么要用Python为Excel编程)

参考资料&#xff1a; ExcelPython飞速搞定数据分析与处理&#xff0c;[瑞士] 费利克斯朱姆斯坦 著&#xff0c;中国工信出版社、人民邮电出版社出版(“Python for Excel, by Felix Zumstein (O’Reilly). Copyright 2021 Zoomer Analytics LLC, 978-1-492-08100-5”) 将不定…

如何在Mac上优雅的使用nvm管理Node.js

Node.js作为前端的基础能力已经不仅仅是一个“JS Server Runtime”了&#xff0c;大量的工具库&#xff0c;本地包管理&#xff0c;Mock环境等&#xff0c;都基于Node.js构建了出来&#xff0c;已经名副其实的成为了前端界的基础设施。 繁荣的生态让大家在构建前端项目的时候不…

通俗的讲,网络爬虫到底是什么?

爬虫通俗来说就是抓取网页数据&#xff0c;比如说大家都喜欢的妹子图、小视频呀&#xff0c;还有电子书、文字评论、商品详情等等。 只要网页上有的&#xff0c;都可以通过爬虫爬取下来。 一般而言&#xff0c;python爬虫需要以下几步&#xff1a; 找到需要爬取内容的网页UR…

基于微信小程序的手机银行系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

NextJs - ServerAction获取文件并处理Excel

NextJs - ServerAction获取文件并处理Excel 一. 客户端二. ServerAction 处理 一. 客户端 use client; import { uploadExcel } from actions/batchInquirySystem/api; import type { UploadProps } from antd; import { Upload } from antd;/*** 创建问询内容*/ const Page …