我们使用 go-sciter,就不得不提 Sciter,Sciter 是一个嵌入式的 HTML/CSS 脚本引擎,旨在为桌面应用创建一个 UI 框架层。

说简单点就是我们通过它可以像写html,css那样写桌面UI。

一、环境准备

第一步:从 https://sciter.com/download/ 地址下载 sciter-sdk

 1. 解压,找到 sciter-sdk\bin\64\sciter.dll 复制到 C:\Windows\System32 或 编译二进制文件的同级目录

注意上面的请根据你自已的系统选择相应文件

第二步:由于使用到 cgo,所以 Windows 下需要安装 Mingw-w64

 1.  MinGW   下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

把下载后的 Mingw-w64\bin 目录加入到环境变量中

第三步:cmd 进入gopath目录并运行

 1.  go get -x github.com/sciter-sdk/go-sciter

二、通过html,css编写简单UI

demo1.go 代码如下:

package mainimport ("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();
}

demo1.html代码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8">
</head>
<body>你好,世界
</body>
</html>

如果出现乱码请把demo1.html文件编码格式转成转成UTF-8+BOM(注意是加BOM)。

三、写个表单的UI

demo2.go代码如下:

package mainimport ("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();
}

demo2.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="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>

关于一些问题的说明:
w.LoadFile() 无法加载相对路径的文件,请确保你运行程序的目录是否正确。
比如新版本的GoLand,在你右键Run时,程序所指向的目录是你 New Project 时设置 Location 的目录,而不是此时 go脚本 所在的目录。

使用go-sciter创建的exe经常会出现未响应的现象,是因为 golang 的协程会在多个线程乱跳,导致 ui 操作也跳到别的线程了。解决办法:在 init 加上 runtime.LockOSThread()如 html 无法正确加载可使用 go-bindata 打包为二进制数据直接引用1. 安装Go-bindata2. go get -u github.com/jteeuwen/go-bindata/3. 把 go-bindata.exe 加入环境变量4. cmd 进入 src 目录 输入以下命令 go-bindata -o demo/bindata.go -pkg main demo/-o 输出文件到 demo/bindata.go 包名 -pkg demo 然后是需要打包的目录 main/ 三个点包括所有子目录这样就可以把所有相关文件打包到 bindata.go 而且开头是 package main 保持和目录一致。使用方法:把 w.LoadFile("demo1.html") 改为bytes, _ := Asset("demo/demo1.html") w.LoadHtml(string(bytes), ""

Go语言使用go-sciter创建桌面应用(一) 简单的通过html,css写ui相关推荐

  1. go html桌面,go语言使用go-sciter创建桌面应用(一) 简单的通过html,css写ui

    我们使用go-sciter,就不得不提Sciter,Sciter 是一个嵌入式的 HTML/CSS/脚本引擎,旨在为桌面应用创建一个 UI 框架层. 说简单点就是我们通过它可以像写html,css那样 ...

  2. 如何在Ubuntu上创建桌面快捷方式

    Desktop icons should be simple, but they're not on Ubuntu 18.04 LTS and newer releases like Ubuntu 1 ...

  3. 如何用 CSS + HTML + JS 创建桌面应用

    05月 31 Node 如何用 CSS + HTML + JS 创建桌面应用 | https://h.lishaoy.net/nwjsElectronjs.html || 最近研究了一下基于 Chro ...

  4. Gox语言中使用Sciter库进行GUI图形界面编程-GX23.1

    Sciter是非常优秀的跨平台GUI图形界面编程库,只需附带一个动态链接库文件,就可以实现基于HTML/CSS/TiScript的图形界面,并且已经经过很多公司和商用产品的实际检验,稳定可靠.我们常见 ...

  5. golang Linux桌面程序,舍弃Electron,使用HTML5 + Golang创建桌面应用程序

    Electron软件框架,允许使用JavaScript创建桌面GUI应用程序接口,并依赖于一个绑定的Chromium + Node.js运行时在大多数Linux桌面用户中名声不是很好,因为它的资源很重 ...

  6. Linux几个版本下创建桌面快捷方式、开始菜单快捷方式、文件管理器右键菜单(只deepin uos 20)

    适配情况: 银河麒麟V10, 桌面图标不显示,开始菜单那显示效果可以 中标麒麟V6, 二者图标都不显示,且开始菜单那未出现条目 Ubuntu20, 桌面快捷方式不起作用, 开始菜单起作用 Ubuntu ...

  7. ubuntu clion 创建桌面快捷方式

    ubuntu clion 创建桌面快捷方式 首先在终端下输入 cd /usr/share/applications/ 进入applications目录下,建立一个clion.desktop文件 sud ...

  8. View4.5测试参考文档7--View Administrator安装、配置、创建桌面池

    View4.5测试参考文档7--View Administrator安装.配置.创建桌面池 见附件! 转载于:https://blog.51cto.com/ieihihc/471642

  9. Swift3.0语言教程使用编码创建和初始化字符串

    Swift3.0语言教程使用编码创建和初始化字符串 使用编码创建和初始化字符串 创建和初始化字符串除了可以使用上文中提到的方法外,还可以使用init(coder:)方法,此方法一般不常使用,其语法形式 ...

最新文章

  1. Core禁用BIP70或只为制造闪电网络硬需求
  2. 图论数学:矩阵树定理
  3. 【海洋女神原创】一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(二) --基本设置二...
  4. java single instance_java单例模式(具体代码显现)两种方法
  5. Vue + Spring Boot 项目实战(六):使用 Element 辅助前端开发
  6. 时序数据库连载系列:指标届的独角兽Prometheus
  7. 认知空间是什么意思_为什么会选择3D立体摄影
  8. 视觉中国网站恢复试运营 此前曾两次遭整改
  9. Fabric chaincode开发调试
  10. 性能测试——脚本录制1
  11. 【洛谷 1873】砍树
  12. python爬虫进程和线程的区别_Python爬虫 | 多线程、多进程、协程
  13. 实验九 vlan间路由实验
  14. P2P软件UFX被指藏后门搜客户信息 融都科技否认
  15. word如何删除某一页的页眉
  16. 雷达图使用攻略(上)
  17. 2020十大黄金配资交易平台排名
  18. 用python抠图方便还是ps方便_我会Python之后都不屑用PS了,Python抠图太方便了!...
  19. 锐捷网络普教中小学“绿色校园网”解决方案
  20. linux kvm 命令行安装Windows xp虚拟机

热门文章

  1. Baumer工业相机堡盟工业相机如何使用BGAPISDK联合Halcon将图像中的六一快乐字体提取出来(C#)
  2. spark 矩阵转置 java_Spark MLlib之使用Breeze操作矩阵向量
  3. VERSA VGG-4422-U-A240有一种幸福叫微笑
  4. 2020MBA考研流程(2019年9月-2020年4月)
  5. Jasper Report详细使用教程(保姆级教程),整合Springboot使用
  6. java调用jasperreport_JasperReport的使用
  7. 潘多拉 IOT 开发板学习(RT-Thread)—— 实验16 WiFi 模块实验(学习笔记)
  8. (已更新)【S-CMS企业建站系统 v5.0 】CMS+含小程序+响应式布局+支持手机版网站+支持Q旺旺客服
  9. unityLOD优化技术详解
  10. 理解网络中的控制平面和转发平面,你就不再是网络小白了