GVKun编程网logo

用Go语言开发桌面应用--By TSL(go语言桌面应用程序开发)

21

针对用Go语言开发桌面应用--ByTSL和go语言桌面应用程序开发这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展flutter开发桌面应用、Flutter开发桌面应用-第一个windwos

针对用Go语言开发桌面应用--By TSLgo语言桌面应用程序开发这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展flutter 开发桌面应用、Flutter开发桌面应用-第一个windwos桌面应用、Golang开发桌面应用的利与弊、go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。等相关知识,希望可以帮助到你。

本文目录一览:

用Go语言开发桌面应用--By TSL(go语言桌面应用程序开发)

用Go语言开发桌面应用--By TSL(go语言桌面应用程序开发)

         

我的基本开发环境是win7 32位,go1.4 windows/386,LiteIDE X 27。其实开发环境不重要

          首先我们来安装Go 的GUI库 ,我们即将用到的是Tcl/Tk的Go绑定,该GUI库作者的Git主页是https://github.com/nsf/gothic

a 把第三方库下载到本地:

         方法1:使用LiteIDE的Get功能

我们进入作者主页的_examples目录里,把任意一个go例子的代码复制到LiteIDE里作为一个新的go文件,接着可以点LiteIDE的”编译“菜单,再选择”Get“,这时LiteIDE会自动下载github.com/nsf/gothic ,如果提示Out of path请检查GOPATH环境变量并确认你的文件是否放对目录,我遇到这个问题时,把当前go代码文件另存到另一个目录下再试着点”Get“ 。如果你还是git不到包,检查一下是否安装了Git程序。

         方法2:命令行下键入

go get github.com/nsf/gothic

如果对这方面不是太了解请百度一下”go get“命令,这个命令的功能是从互联网上自动获取第三方包。

b 安装ActiveTcl

          下载到第三方包以后,我们要安装Tcl/Tk开发环境,前往官方网站http://www.activestate.com/activetcl/downloads

下载一份ActiveTcl 最新版并安装。

c 进行一些修改

          现在我们试图在LiteIDE 里从”编译“菜单Run当前的go例子源代码文件,这时会提示一些错误。我们需要再进行一些改动,

c1.把C:\Tcl\下的目录include整个复制到C:\TDM-GCC-32\mingw32\下【合并、增量覆盖】

【如果你用的是mingw64那就复制到c:\minw-64\x86_64-4.92...\mingW64\x86_64-mingw32\下】

c2.把c:\tcl\bin\下的tcl86.dll 和tk.dll 复制C:\TDM-GCC-32\lib\下,并改名成tcl8.6.dll 和tk8.6.dll

【如果你用的是mingw64那就复制到c:\minw-64\x86_64-4.92...\mingW64\x86_64-mingw32\lib下,并改名成tcl8.6.dll 和tk8.6.dll】

d 好了,至此可以任性地Run例子了

       怎么run一个go源代码文件不用我说了吧,实在不知道请到百度主页查找

e 发布应用

       做完一个应用,就需要发布,把C:\Tcl\Lib下的tcl8.6文件夹和tk8.6文件夹放在exe文件同目录下的lib文件夹里

再把C:\Tcl\bin\下的tcl86.dll、tk86.dllzlib1.dll跟exe文件放在同一目录,这样就可以在目标机器上不需要安装ActiveTcl开发环境而直接运行程序了,你也可以看看我写的应用【非专业,水平有限的】 下载请到http://pan.baidu.com/s/1jGvIQ14

f 关于库,顺便上几个图

     Tcl/Tk的Go语言GUI库,能用到很多的界面部件,你可以下载一份vTcl加强版【这个是国人做的,网上几乎失传了,这一份是从韩国一个主页下载到的】来制作基于Tcl/Tk语言的界面然后提取相关界面的语句在Go源代码里使用,我写的几个应用都是用她产生界面然后提取代码的。下载地址请到http://pan.baidu.com/s/1eQ90oUY




BY TSL  【文章如果有什么错误请指出,未经作者同意不得转载。  】

【我博客里的另一篇文章将简述如何使用这个GUI库 http://my.oschina.net/u/2315579/blog/408726】

2015-4-19 10:50

【好像安装 ActiveTcl 8.6.4.0之后的版本,不用按步骤c进行修改都可以run go文件了】


flutter 开发桌面应用

flutter 开发桌面应用

官方

flutter config --enable-windows-desktop #to enable Windows
flutter run -d Windows #需 Visual Studio toolchain

需window10 Visual Studio

[!] Visual Studio - develop for Windows (Visual Studio Community 2019 16.2.5)
    X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the "Desktop development with C++" workload, and include these components:
        MSBuild
        MSVC v142 - VS 2019 C++ x64/x86 build tools
       - If there are multiple versions, install the latest one
        Windows 10 SDK (10.0.17763.0)

Flutter开发桌面应用-第一个windwos桌面应用

Flutter开发桌面应用-第一个windwos桌面应用

Flutter开发桌面应用-第一个windwos桌面应用

    • 参考官方文档
    • 首先
    • 升级以支持windos、linux等
    • 环境支持
    • 创建第一个flutter程序
    • 最后,成功!hhh
    • 末尾

前言:Alpha现已对Windows桌面提供Flutter支持(以及macOS和Linux支持)!
本文参考官方文档,介绍如何在windos运行一个windos窗口程序
在已安装flutter的基础上展开介绍

参考官方文档

官方文档

首先

在命令行运行flutter doctor以查看是否有任何未解决的问题,如有问题需先解决!后续就只需要处理,后续产生的问题了。

升级以支持windos、linux等

在命令行上,执行以下命令,以确保您拥有最新的桌面支持并已启用。如果看到“未找到Flutter:命令”,请确保已安装Flutter SDK,并且已在安装 路径中。
依次执行以下命令:
1、切换flutter通道
flutter channel dev
2、更新fluuter
flutter upgrade
3、配置你的平台
flutter config --enable-windows-desktop






升级报错时参考:
升级PowerShell .5.0


环境支持

在此运行

flutter doctor
提示:
1、android sdk…
2、visual studio…
解决:
1、android sdk报错,执行,报错提示需要输入命令就可以了
2、visual studio安装环境支持具体如下:
vs 2019版本
安装成功后需要如下工具包,参考图2图3详情
详情参考如下










创建第一个flutter程序

找到一个空文件夹,在命令行输入
创建项目
flutter create myapp
转到项目目录
cd myapp
运行项目
flutter run





最后,成功!hhh

末尾

有问题欢迎留言!一起交流解决。




Golang开发桌面应用的利与弊

Golang开发桌面应用的利与弊

跨平台桌面开发中使用 go 语言的优势包括:跨平台性、高效性、并发性、强大的标准库,缺点为:gui 限制、原生 ide 支持较弱、资源消耗较高。如考虑开发跨平台文本编辑器,可以使用 go 标准库处理文件 i/o 和文本格式化,并利用第三方库创建跨平台界面。

Golang开发桌面应用的利与弊

Go 语言开发桌面应用的利弊

使用 Go 语言进行跨平台桌面开发具有诸多优势和一些潜在缺点。

优点:

立即学习“go语言免费学习笔记(深入)”;

  • 跨平台:Go 编译为可移植的二进制文件,可以在 Windows、macOS 和 Linux 上运行。
  • 高效性:Go 是一种编译语言,生成快速高效的应用程序。
  • 并发性:Go 语言原生支持并发性,便于开发多线程或多进程应用程序。
  • 强大的标准库:Go 标准库提供了丰富的工具,包括 GUI 库和网络功能。

缺点:

  • GUI 限制:Go 标准库中的 GUI 功能相对有限,开发复杂的界面可能需要使用第三方库。
  • 缺少原生 IDE:与其他流行的桌面开发语言(如 Python 或 Java)相比,Go 语言的原生 IDE 支持较弱。
  • 资源消耗:Go 编译的二进制文件通常比其他同类语言(如 C++)更大。

实战案例:

考虑一个使用 Go 语言开发的跨平台文本编辑器的例子。该编辑器使用标准库中的 bufio 和 fmt 包来处理文件 I/O 和文本格式化。它还使用第三方库 github.com/rivo/tview 来创建跨平台的文本编辑器界面。

代码示例:

package main

import (
    "bufio"
    "fmt"

    "github.com/rivo/tview"
)

func main() {
    // 创建一个新的文本编辑器应用程序
    app := tview.NewApplication()

    // 创建文本输入字段
    textInput := tview.NewTextView()
    textInput.SetBorder(true)

    // 添加文本输入字段到应用程序中
    app.SetRoot(textInput, true)

    // 处理键盘事件
    textInput.SetInputCapture(func(event *tview.KeyEvent) *tview.EventReturn {
        if event.Key == tview.KeyEsc {
            return tview.EventHandled
        }

        return nil
    })

    // 处理文件 I/O
    textInput.SetChangedFunc(func() {
        // 打开并读取文件
        file, err := os.Open("file.txt")
        if err != nil {
            fmt.Println(err)
            panic(err)
        }
        defer file.Close()

        scanner := bufio.NewScanner(file)
        for scanner.Scan() {
            textInput.SetText(scanner.Text())
        }

        if err := scanner.Err(); err != nil {
            fmt.Println(err)
            panic(err)
        }
    })

    // 启动应用程序
    if err := app.Run(); err != nil {
        fmt.Println(err)
        panic(err)
    }
}
登录后复制

以上就是Golang开发桌面应用的利与弊的详细内容,更多请关注php中文网其它相关文章!

go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。

go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。

有些时候我们需要在窗口创建并显示时,加载一些后端的配置,这就需要用到view提供的几个事件。

https://sciter.com/docs/content/sciter/View.htm

statechange 状态改变时,最大化,最小化,显示,隐藏,会触发事件回调。

activate 窗口激活或停用时,可以理解为获取焦点或失去焦点,触发事件回调。

demo.go的代码如下:

package main

import (
	"fmt"
	"log"
	"path/filepath"
	"database/sql"
	"encoding/json"
	_ "github.com/go-sql-driver/mysql"
	"github.com/sciter-sdk/go-sciter"
	"github.com/sciter-sdk/go-sciter/window"
)

type User struct {
	Name string `json:"name"`;
	Pwd string `json:"pwd"`;
}

func defFunc(w *window.Window) {

	//注册dump函数方便在tis脚本中打印数据
	w.DefineFunction("dump", func(args ...*sciter.Value) *sciter.Value {
		for _, v := range args {
			fmt.Print(v.String() + " ");
		}
		fmt.Println();
		return sciter.NullValue();
	});

	//定义函数,用于tis脚本中加载用户名和密码
	w.DefineFunction("LoadNameAndPwd", func(args ...*sciter.Value) *sciter.Value {
		//连接数据库
		db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8");
		if err != nil {
			fmt.Println(err);
		}

		//关闭数据库
		defer db.Close();

		//查询一行数据
		name := "";
		pwd := "";
		rows := db.QueryRow("select name,pwd from tb_users where id = ?", 1);
		rows.Scan(&name, &pwd);

		//构建一个json
		user := User{Name: name, Pwd: pwd};
		data, _ := json.Marshal(user);

		//将json返回,tis脚本中接收该值
		return sciter.NewValue(string(data));
	});
}

func main() {
	w, err := window.New(sciter.SW_TITLEBAR|
		sciter.SW_RESIZEABLE|
		sciter.SW_CONTROLS|
		sciter.SW_MAIN|
		sciter.SW_ENABLE_DEBUG,
		nil);
	if err != nil {
		log.Fatal(err);
	}
	//加载文件
	filepath, _ := filepath.Abs("./demo.html");
	err = w.LoadFile(filepath);
	//设置标题
	w.SetTitle("加载数据");
	//定义函数
	defFunc(w);
	//显示窗口
	w.Show();
	//运行窗口,进入消息循环
	w.Run();
}

demo.html的代码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
</head>
<body>
    用户名:<input type="text" id="name" value="">
    <br>
    密码:<input type="text" id="pwd" value="">
</body>
<script type="text/tiscript">
    //窗口被激活或停用时,触发回调,可以理解为获得焦点
    view.on("activate", function(type) {
        //调用go中定义的方法LoadNameAndPwd
        var data = view.LoadNameAndPwd();
        //解析json,转换成对象
        data = JSON.parse(data);
        $(#name).value = data.name;
        $(#pwd).value = data.pwd;
    });

    //窗口状态发生改变时,触发回调,最大化,最小化,隐藏,显示
    view.on("statechange", function() {
        //调用go中定义的方法LoadNameAndPwd
        var data = view.LoadNameAndPwd();
        //解析json,转换成对象
        data = JSON.parse(data);
        $(#name).value = data.name;
        $(#pwd).value = data.pwd;
    });
</script>
</html>

最后的显示结果如下:

我的数据库表数据如下:

 

关于用Go语言开发桌面应用--By TSLgo语言桌面应用程序开发的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于flutter 开发桌面应用、Flutter开发桌面应用-第一个windwos桌面应用、Golang开发桌面应用的利与弊、go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。等相关内容,可以在本站寻找。

本文标签: