博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。
阅读量:5985 次
发布时间:2019-06-20

本文共 1689 字,大约阅读时间需要 5 分钟。

有些时候我们需要在窗口创建并显示时,加载一些后端的配置,这就需要用到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);		//构建一个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的代码如下:

    
用户名:
密码:

最后的显示结果如下:

我的数据库表数据如下:

 

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

你可能感兴趣的文章
Android自定义属性
查看>>
Visual C#之核心语言
查看>>
代码重构(五):继承关系重构规则
查看>>
Windows App开发之集合控件与数据绑定
查看>>
中大型网站技术架构演变过程
查看>>
ARTS训练第三周
查看>>
vue中v-for循环如何将变量带入class的属性名中
查看>>
phpstorm xdebug remote配置
查看>>
引用与指针的区别
查看>>
pygtk笔记--2.1:布局容器,VBox、Hbox、Alignment
查看>>
dtree.js树的使用
查看>>
Springboot2.1.3 + redis 实现 cache序列化乱码问题
查看>>
线程什么时候需要同步,什么时候不需要同步?
查看>>
Struts2 自定义拦截器(方法拦截器)
查看>>
SQL中存储过程的创建和使用
查看>>
荷兰政府:保证不强制在任何产品中留有后门
查看>>
编写单元测试的10条理由
查看>>
LINUX-SAMBA服务配置
查看>>
图像处理------光束效果
查看>>
基于ES5`defineProperty` 实现简单的 Mvvm框架
查看>>