go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。
生活随笔
收集整理的這篇文章主要介紹了
go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有些時候我們需要在窗口創建并顯示時,加載一些后端的配置,這就需要用到view提供的幾個事件。
https://sciter.com/docs/content/sciter/View.htmstatechange 狀態改變時,最大化,最小化,顯示,隱藏,會觸發事件回調。
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创建桌面应用(八) 窗口显示时,自动加载后端数据。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python项目实战:获取本机所有IP地
- 下一篇: Linux基础笔记_01