Go 跨平台GUI框架fyne 中文文档1 开始

这篇具有很好参考价值的文章主要介绍了Go 跨平台GUI框架fyne 中文文档1 开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fyne (go 跨平台 GUI ) 入门中文文档1开始

hello word

A simple app starts by creating an app instance with app.New() and then opening a window with app.NewWindow(). Then a widget tree is defined that is set as the main content with SetContent() on a window. The app UI is then shown by calling ShowAndRun() on the window.

一个简单的应用程序首先使用 app.New() 去创建一个应用实例,然后使用app.NewWindow() 打开一个窗口。然后定义一个部件树再在窗口使用SetContent() 将其设置为主要内容。通过ShowAndRun() 在窗口显示应用的ui。

package main


import (

"fyne.io/fyne/v2/app"

"fyne.io/fyne/v2/widget"

)


func main() {

a := app.New()

w := a.NewWindow("Hello World")


w.SetContent(widget.NewLabel("Hello World!"))

w.ShowAndRun()

}

运行结果

go gui框架,golang gui,golang,ui

 文章来源地址https://www.toymoban.com/news/detail-534638.html

Application and RunLoop (应用和事件 runloop)

For a GUI application to work it needs to run an event loop (sometimes called a runloop) that processes user interactions and drawing events. In Fyne this is started using the or functions. One of these must be called from the end of your setup code in the function.App.Run()Window.ShowAndRun()main()

An application should only have one runloop and so you should only call once in your code. Calling it a second time will cause errors.Run()

gui 应用的工作需要运行一个事件循环(有时也叫 runloop)来处理用户交互和绘图事件。在Fyne中这是使用App.Run()Window.ShowAndRun()函数开始的。并且他们必须设置在代码的末尾。

一个应用程序应该只需要一个事件循环(runloop)所以你应该在你的代码中只调用一次run()函数。在第二次调用的时候可能会发生错误

package main


import (

"fmt"


"fyne.io/fyne/v2/app"

"fyne.io/fyne/v2/widget"

)


func main() {

myApp := app.New()

myWindow := myApp.NewWindow("Hello")

myWindow.SetContent(widget.NewLabel("Hello"))


myWindow.Show()

myApp.Run()

tidyUp()

}


func tidyUp() {

fmt.Println("Exited")

}

运行结果

go gui框架,golang gui,golang,ui

 

点击x 图标后 打印 exited

For desktop runtimes an app can be quit directly by calling (mobile apps do not support this) - normally not needed in developer code. An application will also quit once all the windows are closed. See also that functions executed after will not be called until the application exits.

App.Quit() Run()

对于桌面应用运行时,可以通过直接调用 App.Quit() 直接退出应用程序(移动应用程序并不支持)-在开发人员的代码中并不需要,在关闭所有窗口后应用程序也将会退出。请看run() 在应用程序退出前不会调用之后执行的函数。

更新内容Updating Content

Having completed the hello world tutorial or other examples you will have created a basic user interface. In this page we see how the content of a GUI can be updated from your code.

The first step is to assign the widget you want to update to a variable. In the hello world tutorial we passed directly into , to update it we change that to two different lines, such as:widget.NewLabelSetContent()

完成 hello world 教程或者其他示例后,你将创建一个基本的用户界面,我们会看到如何将去更新你代码里的gui 内容

第一步是将要更新的小部件分配给一个变量,在hello world 教程里我们通过直接设置,为了更新他我们改变为两个不同的行,例如:widget.NewLabelSetContent()

clock := widget.NewLabel("")

w.SetContent(clock)

Once the content has been assigned to a variable we can call functions like . For our example we will set the content of our label to the current time, with the help of . SetText("new text") Time.Format

将内容分配给变量后我们可以如同调用函数那样调用他,例如,我们可以将标签的内容设置为当前时间使用 SetText("new text")

formatted := time.Now().Format("Time: 03:04:05")

clock.SetText(formatted)

package main



import (

   "time"


   "fyne.io/fyne/v2/app"

   "fyne.io/fyne/v2/widget"

)


func main() {

   myApp := app.New()

   myWindow := myApp.NewWindow("Hello")

   //第一步是将要更新的小部件分配给变量。

   clock := widget.NewLabel("")

   myWindow.SetContent(clock)

   //将标签的内容设置为当前时间 Time.Format

   formatted := time.Now().Format("Time: 03:04:05")

   clock.SetText(formatted)

   myWindow.Show()

   myApp.Run()

}

运行结果

go gui框架,golang gui,golang,ui

 

That is all we need to do to change content of a visible item (see below for the full code). However, we can go further and update content on a regular basis

这就是更改内容所需的全部工作,然而我们也可以更进一步,定时去更改内容。

后台运行更新 GUI 的内容 running in the background

 Most applications will need to have processes that run in the background, for example downloading data or responding to events. To simulate this we will extend the code above to run every second.

Like with most go code we can create a goroutine (using the keyword) and run our code there. If we move the text update code to a new function it can be called on initial display as well as on a timer for regular updating. By combining a goroutine and the inside a for loop we can update the label every second.gotime.Tick

大多数应用程序需要在后台运行进程,例如,下载数据或者响应事件。 我们将会拓展上面的的代码,每秒运行一次

与大多数go代码一样,我们会创建 goroutine 使用关键字,并在哪里运行代码。如果我们将文本更新代码移动到一个新的函数,他可以在初始化或者像一个定时器有规律的被调用。通过结合 goroutine 和gotime.tick 的 for 循环,我们可以每秒都更新这个标签

go func() {

for range time.Tick(time.Second) {

updateTime(clock)

}

}()

It is important to place this code before or calls because they will not return until the application closes. With all of this together the code will run and update the user interface each second, creating a basic clock widget. The full code is as follows: ShowAndRun Run

将这个代码放在ShowAndRun 和Run 调用前是很重要的,因为他们在应用关闭之前是不会返回的。这些代码每秒都会运行和更新用户界面,创建一个基本的时钟部件代码如下

package main


import (

"time"


"fyne.io/fyne/v2/app"

"fyne.io/fyne/v2/widget"

)


func updateTime(clock *widget.Label) {

formatted := time.Now().Format("Time: 03:04:05")

clock.SetText(formatted)

}


func main() {

a := app.New()

w := a.NewWindow("Clock")


clock := widget.NewLabel("")

updateTime(clock)


w.SetContent(clock)

go func() {

for range time.Tick(time.Second) {

updateTime(clock)

}

}()

w.ShowAndRun()

}

运行效果 时间每秒都在变化

go gui框架,golang gui,golang,ui

 

Window Handling 窗口处理

Windows are created using and need to be shown using the function. The helper method on allows you to show your window and run the application at the same time.App.NewWindow()Show()ShowAndRun()fyne.Window

窗口是使用App.NewWindow()创建的,并且需要show()函数显示出来。这些帮助方法将允许你同时创建你自己的窗口和运行应用程序

By default a window will be the right size to show its content by checking the function (more on that in later examples). You can set a larger size by calling the method. Into this is passed a which contains a width and height using device independent pixels (meaning that it will be the same across different devices), for example to make a window square by default we could:MinSize()Window.Resize()fyne.Size

在默认情况下,窗口的正确大小和显示的内容是通过检查MinSize()函数来实现的,在后面更多的实例会看到,你可以设置一个较大的大小通过Window.Resize()

函数来实现。传入 fyne.Size {其中包含着使用设备的独立像素的宽和高},例如创建一个正方型的窗口我们可以通过默认的代码创建如下:

w.Resize(fyne.NewSize(100, 100))

Be aware that the desktop environment may have constraints that cause windows to be smaller than requested. Mobile devices will typically ignore this as they are only displayed at full-screen.

需要的是,在桌面开发环境可能导致窗口小于请求窗口的限制,移动设备一般会忽略这一点,因为他们通常只选择全屏显示。

If you wish to show a second window you must only call the function. It can also be helpful to split from if you want to open multiple windows when your application starts. The example below shows how to load two windows when starting.Show()Window.Show()App.Run()

如果你希望显示第二个窗口,你必须只使用Show()方法,如果你想要打开多个窗口在应用程序运行的时候,分开对此很有帮助。 下面的例子将会演示如何加载两个窗口。

运行效果

go gui框架,golang gui,golang,ui

 

到了这里,关于Go 跨平台GUI框架fyne 中文文档1 开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【QT+QGIS跨平台编译】之三:【OpenSSL+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。SSL能使用户/服务器应用

    2024年01月22日
    浏览(85)
  • 【QT+QGIS跨平台编译】之七:【libjpeg+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    libjpeg是一个广泛使用的jpeg图像压缩和解压的函数库,采用 C 语言开发。 2013年1月,Independent JPEG Group发布了版本9,对新引入的无损编码模式进行了改进。2022年1月,发布了版本9e,是唯一真正的源参考JPEG编解码器。 【libjpeg跨平台编译】:Windows环境下编译成果(支撑QGIS跨平台

    2024年01月25日
    浏览(61)
  • 【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它

    2024年01月22日
    浏览(59)
  • 【QT+QGIS跨平台编译】之五:【curl+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    (libcurl编译,依赖OpenSSL、libSSH2等库) curl(CommandLine Uniform Resource Locator)主要功能就是用不同的协议连接和沟通不同的服务器,相当封装了的socket。 libcurl支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可

    2024年01月23日
    浏览(71)
  • 开源、跨平台安卓摸鱼(投屏)软件 Scrcpy 中文使用指南

    废话不说,先上链接:GitHub上的Scrcpy Scrcpy 可以将手机画面投射到电脑上,让你可以在电脑上对手机进行操控。Scrcpy 通过 USB 或 Wi-Fi 与安卓手机相连,不需要在手机上安装任何 app,也不需要取得 ROOT 权限。 简单地说,就是可以让你在电脑上控制手机!它支持鼠标控制、键盘

    2024年02月12日
    浏览(61)
  • 【QT+QGIS跨平台编译】之三十六:【RasterLite2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    RasterLite2是一个开源的轻量级栅格数据库,可以用于存储和管理各种类型的栅格数据,包括卫星遥感图像、数字高程模型等。 与传统的GIS数据存储方式不同,RasterLite2采用基于SQLite的数据库引擎,支持快速的数据查询和空间分析操作。同时,由于其轻量级的设计,RasterLite2可以

    2024年02月19日
    浏览(65)
  • rpc跨平台通信的简单案例,java和go

    当我们使用Go和Java进行RPC(Remote Procedure Call,远程过程调用)跨平台通信时,你可以使用gRPC作为通信框架。gRPC是一个高性能、开源的RPC框架,它支持多种编程语言,包括Go和Java。下面我将为你提供一个简单的案例来说明如何使用Go和Java进行RPC跨平台通信。 首先,你需要定义

    2024年01月22日
    浏览(43)
  • Python中的跨平台框架有哪些?

    Python中有几个跨平台框架,可以在不同操作系统上运行。一些常见的跨平台框架包括: PyQt:基于Qt库的Python绑定,支持在Windows、Mac和Linux等多个平台上使用。 wxPython:基于wxWidgets库的Python绑定,支持在Windows、Mac和Linux等多个平台上使用。 Kivy:一个开源的Python跨平台框架,用

    2024年02月15日
    浏览(34)
  • 初识鸿蒙跨平台开发框架ArkUI-X

    HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通

    2024年02月13日
    浏览(48)
  • 跨平台桌面端框架wails 修改默认图标

    博主开发了一个浏览器aweb123.com 执行 wails build就会自动生成新的图标

    2024年02月07日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包