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

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

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

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

demo.go的代码如下:

package mainimport ("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);//构建一个jsonuser := 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中定义的方法LoadNameAndPwdvar data = view.LoadNameAndPwd();//解析json,转换成对象data = JSON.parse(data);$(#name).value = data.name;$(#pwd).value = data.pwd;});//窗口状态发生改变时,触发回调,最大化,最小化,隐藏,显示view.on("statechange", function() {//调用go中定义的方法LoadNameAndPwdvar data = view.LoadNameAndPwd();//解析json,转换成对象data = JSON.parse(data);$(#name).value = data.name;$(#pwd).value = data.pwd;});
</script>
</html>

最后的显示结果如下:

我的数据库表数据如下:

转载于:https://www.cnblogs.com/jkko123/p/10837729.html

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

  1. Qt关闭程序的时候创建json文件,再次启动时重新加载到界面上

    提要 当程序关闭后再次打开程序需要加载上一次的按钮名称设置. 思路 关闭程序的时候保存此刻界面按钮的文本,正常情况下只需在程序退出时调用的析构函数的内部实现,将界面所有的按钮文本生成一个文件,在程序下 ...

  2. 解决IDEA创建Maven工程时一直加载的问题

    解决创建Maven工程时一直加载的问题 先打开idea的->file->setting 然后直接搜索Maven. 然后搜索maven->Runner, 然后在Vm Options中输 ...

  3. 计算机桌面怎么情理,电脑关机时自动清理垃圾设置技巧

    如何电脑关机时候自动清理垃圾文件,我们在使用电脑时候会产生大量的系统垃圾文件.这些垃圾文件不及时清理的话会占据很大内存.还会影响运行速度.久而久之电脑就变得越来越慢. 其实我们可以设置电脑在关机时自动 ...

  4. spark1.4加载mysql数据 创建Dataframe及join操作连接方法问题

    首先我们使用新的API方法连接mysql加载数据 创建DF import org.apache.spark.sql.DataFrame import org.apache.spark.{SparkCo ...

  5. Tp5自动加载创建admin和index文件夹

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yumon321/article/det ...

  6. 分析进程创建、执行、切换以及可执行文件的加载

    sa18225499 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 一.实验步骤及分析 进程描述 我们通过进程控制块来描述来描述进程,又 ...

  7. FlowChart.NET使用教程:加载图形数据和创建图形对象

    FlowChart.NET是一个通用的流程图控件,提供了用于创建或编辑图表的直观的用户交互模型. 今天演示一下在FlowChart.NET中如何加载来自XML的图形数据,以及创建对应于图形节点和边的图 ...

  8. 【ArcGIS风暴】ArcGIS10.6创建LAS数据集的两种方法并加载点云数据

    文章目录 1. 使用上下文菜单创建 LAS 数据集 2. 使用地理处理工具创建 LAS 数据集 3. 显示LAS数据集 LAS 数据集是位于文件夹中的独立文件,并且引用 LAS 格式的激光雷达数据和用 ...

  9. vue脚手架创建项目失败,显示vue:无法加载文件

    问题描述 利用脚手架创建项目时,出现如下报错: 解决方案: 用管理员身份打开PowerShell,输入如下命令,再输入Y即可. 这样,就可以正常创建项目了.

最新文章

  1. 人工智能的2020:泡沫破灭?还是最后的狂欢?
  2. MBG 相关资源链接
  3. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
  4. js对象与字符串相互转换
  5. Acwing第 11 场周赛【未完结】
  6. java怎么访问视图_springmvc-直接访问视图文件
  7. 不能卸载java_无法卸载注入的DLL
  8. jaxb_JAXB –新手的观点,第2部分
  9. 请各位程序员 正在创业的 正在努力赚钱的 好好看看下面的话
  10. Mybatisの常见面试题
  11. 是否应该扔掉就代码,重写整个软件?
  12. Google面试题——蓄水问题
  13. XAMPP浏览器输入localhost跳转localhost/dashboard/
  14. HDU 6030(矩阵快速幂+规律)
  15. Acwing 1402. 星空之夜(搜索+哈希)
  16. 游戏设计的艺术:一本透镜的书——第十九章 世界包含着各种空间
  17. Eplan创建符号详细解说
  18. Sleepy Cow Sorting(树状数组)
  19. oracle起监听命令,lsnrctl oracle 监听器 命令行 操作命令 lsnrctl services
  20. 02.数学建模的步骤

热门文章

  1. 建立索引要考虑的因素
  2. MySQL第4天:MySQL的架构介绍之修改数据库编码格式
  3. Linux dd 命令具体用法
  4. linux三 gdb/makefeile/io
  5. springmvc二十七:springmvc-ResponseBody与ResponseEntity
  6. springmvc十六:九大组件
  7. 中科院院士指出“万物互联”只是开始,“万物控制”是物联网下一个挑战
  8. odoo开发笔记:前端显示强制换行
  9. 利用zxing读写PDF417码制的二维码
  10. easyui combobox设置只读属性