我们使用go-sciter,就不得不提Sciter,Sciter 是一个嵌入式的 HTML/CSS/脚本引擎,旨在为桌面应用创建一个 UI 框架层。
说简单点就是我们通过它可以像写GUI。
第一步:从地址下载sciter-sdk
解压,找到
sciter-sdk\bin\64\sciter.dll
复制到
c:\Windows\System32
TIPS:
上面的请根据你的系统选择相应文件
第二步:由于使用到cgo,所以Window下需要安装Mingw
下载地址:
https://sourceforge.net/projects/mingw/files/
安装可以参考cygwin
也可以直接下载对应文件,把mingw\bin,添加到path里。
go get -u github.com/sciter-sdk/go-sciter
如果是设置了 gomodule111=on的注意参考这篇:
输入以下代码:
go mod init go-sciter
go mod edit -require github.com/sciter-sdk/go-sciter@latest
demo_one.go代码如下:
package main
import (
"github.com/sciter-sdk/go-sciter"
"github.com/sciter-sdk/go-sciter/window"
"log"
)
func main() {
//创建window窗口
//参数一表示创建窗口的样式
//SW_TITLEBAR 顶层窗口,有标题栏
//SW_RESIZEABLE 可调整大小
//SW_CONTROLS 有最小/最大按钮
//SW_MAIN 应用程序主窗口,关闭后其他所有窗口也会关闭
//SW_ENABLE_DEBUG 可以调试
//参数二表示创建窗口的矩形
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);
}
//加载文件
w.LoadFile("demo1.html");
//设置标题
w.SetTitle("你好,世界");
//显示窗口
w.Show();
//运行窗口,进入消息循环
w.Run();
}
demo_one.html代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
</head>
<h1>
Let's Start.
</h1>
<body>
Hello World!
</body>
</html>
demo_two.go代码如下:
package main
import (
"github.com/sciter-sdk/go-sciter"
"github.com/sciter-sdk/go-sciter/window"
"log"
)
func main() {
//创建window窗口
//参数一表示创建窗口的样式
//SW_TITLEBAR 顶层窗口,有标题栏
//SW_RESIZEABLE 可调整大小
//SW_CONTROLS 有最小/最大按钮
//SW_MAIN 应用程序主窗口,关闭后其他所有窗口也会关闭
//SW_ENABLE_DEBUG 可以调试
//参数二表示创建窗口的矩形
w, err := window.New(sciter.SW_TITLEBAR|
sciter.SW_RESIZEABLE|
sciter.SW_CONTROLS|
sciter.SW_MAIN|
sciter.SW_ENABLE_DEBUG,
//给窗口设置个大小
&sciter.Rect{Left: 0, Top: 0, Right: 500, Bottom: 500});
if err != nil {
log.Fatal(err);
}
//加载文件
w.LoadFile("demo2.html");
//设置标题
w.SetTitle("表单");
//显示窗口
w.Show();
//运行窗口,进入消息循环
w.Run();
}
demo_two.html代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单</title>
<style>
table {
width: 100%;
border-collapse: collapse;
}
table td {
padding: 10px;
border: 1px solid #ccc;
}
table td:first-child {
white-space:nowrap;
}
</style>
</head>
<body>
<form action="">
<table>
<tr>
<td>用户名:</td>
<td><input type="text"></td>
</tr>
<tr>
<td>昵称:</td>
<td><input type="text"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" value="0">男
<input type="radio" value="1">女
</td>
</tr>
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" value="">看书
<input type="checkbox" value="">打球
<input type="checkbox" value="">旅游
</td>
</tr>
<tr>
<td>简介:</td>
<td>
<textarea name="" id="" cols="30" rows="10"></textarea>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>