针对用Go语言开发桌面应用--ByTSL和go语言桌面应用程序开发这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展flutter开发桌面应用、Flutter开发桌面应用-第一个windwos
针对用Go语言开发桌面应用--By TSL和go语言桌面应用程序开发这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展flutter 开发桌面应用、Flutter开发桌面应用-第一个windwos桌面应用、Golang开发桌面应用的利与弊、go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。等相关知识,希望可以帮助到你。
本文目录一览:- 用Go语言开发桌面应用--By TSL(go语言桌面应用程序开发)
- flutter 开发桌面应用
- Flutter开发桌面应用-第一个windwos桌面应用
- Golang开发桌面应用的利与弊
- go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。
用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.dll和zlib1.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 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桌面应用
-
- 参考官方文档
- 首先
- 升级以支持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开发桌面应用的利与弊
跨平台桌面开发中使用 go 语言的优势包括:跨平台性、高效性、并发性、强大的
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创建桌面应用(八) 窗口显示时,自动加载后端数据。
有些时候我们需要在窗口创建并显示时,加载一些后端的配置,这就需要用到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 TSL和go语言桌面应用程序开发的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于flutter 开发桌面应用、Flutter开发桌面应用-第一个windwos桌面应用、Golang开发桌面应用的利与弊、go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。等相关内容,可以在本站寻找。
本文标签: