社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
准备用go开发一个桌面UI,网上库比较多,我用到了两个。
废话不多说,直接上代码
package main
import (
"fmt"
"github.com/sciter-sdk/go-sciter"
"github.com/sciter-sdk/go-sciter/window"
"log"
"math/rand"
"mygo/kalf/res"
"time"
)
// 输出一个随机数
func getb1() int {
rand.Seed(time.Now().UnixNano())
return rand.Int()
}
func uiToBack(root *sciter.Element) {
button1,_ := root.SelectById("button1")
button1.DefineMethod("test1", func(args ...*sciter.Value) *sciter.Value {
for _,arg := range args{
fmt.Println("获取到前端的参数:",arg)
}
return sciter.NullValue()
})
}
func BackToUi(w *window.Window) {
w.DefineFunction("test2", func(args ...*sciter.Value) *sciter.Value{
return sciter.NewValue(getb1())
})
}
func defFunc(w *window.Window) {
//注册reg函数,用于处理注册逻辑,这里只是简单的把数据打印出来
w.DefineFunction("postData", func(args ...*sciter.Value) *sciter.Value {
for _, v := range args {
//fmt.Print(v.String() + " ")
fmt.Println("11111",v)
}
fmt.Println()
return sciter.NullValue()
})
}
func loadImg(root *sciter.Element) {
img, _ := root.SelectById("img")
img.AttachEventHandler(&sciter.EventHandler{
//OnDataArrived 当资源被加载但未使用时调用
OnDataArrived: func(he *sciter.Element, params *sciter.DataArrivedParams) bool {
//设置属性,给img标签设置src
he.SetAttr("src", params.Uri())
return false
},
})
img.Load("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1395977027,165040144&fm=26&gp=0.jpg", sciter.RT_DATA_IMAGE)
}
func main() {
w, err := window.New(sciter.DefaultWindowCreateFlag, &sciter.Rect{100,100,1000,800})
if err != nil {
log.Fatal(err)
}
bytes, _ := res.Asset("res/index.html")
w.LoadHtml(string(bytes),"")
//设置标题
w.SetTitle("元素加载内容")
root,_ := w.GetRootElement()
fmt.Println(root)
//后台数据到前端
BackToUi(w)
// 前端数据到后端
uiToBack(root)
// 提交表单
defFunc(w)
// 加载后台图片
loadImg(root)
w.Show()
w.Run()
}
代码很简单,我就不说了,有问题请移步评论区,谢谢!
为什么要拿在这里说呢,因为加载的html跟配置文件一个道理,默认是打包不进二进制文件中的
我这里主要做了三次尝试,前两次失败,最后一次打包成功了,都分享出来,或供借鉴或求指正
// w.LoadFile("C:/Users/zy/go/src/github.com/sciter-sdk/go-sciter/examples/demoes/01/demo1.html")
w.LoadHtml(htmlStr,"")
乱码原因我也不知道,也没有解决,求大神解惑
网上有教程,我就不说我的失败操作步骤了,有成功的希望大家可以告知
bytes, _ := res.Asset("res/index.html")
w.LoadHtml(string(bytes),"")
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!