日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有些時(shí)候我們需要在窗口創(chuàng)建并顯示時(shí),加載一些后端的配置,這就需要用到view提供的幾個(gè)事件。

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

statechange 狀態(tài)改變時(shí),最大化,最小化,顯示,隱藏,會(huì)觸發(fā)事件回調(diào)。

activate 窗口激活或停用時(shí),可以理解為獲取焦點(diǎn)或失去焦點(diǎn),觸發(fā)事件回調(diào)。

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) {//注冊(cè)dump函數(shù)方便在tis腳本中打印數(shù)據(jù)w.DefineFunction("dump", func(args ...*sciter.Value) *sciter.Value {for _, v := range args {fmt.Print(v.String() + " ");}fmt.Println();return sciter.NullValue();});//定義函數(shù),用于tis腳本中加載用戶名和密碼w.DefineFunction("LoadNameAndPwd", func(args ...*sciter.Value) *sciter.Value {//連接數(shù)據(jù)庫(kù)db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8");if err != nil {fmt.Println(err);}//關(guān)閉數(shù)據(jù)庫(kù)defer db.Close();//查詢一行數(shù)據(jù)name := "";pwd := "";rows := db.QueryRow("select name,pwd from tb_users where id = ?", 1);rows.Scan(&name, &pwd);//構(gòu)建一個(gè)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);//設(shè)置標(biāo)題w.SetTitle("加載數(shù)據(jù)");//定義函數(shù)defFunc(w);//顯示窗口w.Show();//運(yùn)行窗口,進(jìn)入消息循環(huán)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">//窗口被激活或停用時(shí),觸發(fā)回調(diào),可以理解為獲得焦點(diǎn)view.on("activate", function(type) {//調(diào)用go中定義的方法LoadNameAndPwdvar data = view.LoadNameAndPwd();//解析json,轉(zhuǎn)換成對(duì)象data = JSON.parse(data);$(#name).value = data.name;$(#pwd).value = data.pwd;});//窗口狀態(tài)發(fā)生改變時(shí),觸發(fā)回調(diào),最大化,最小化,隱藏,顯示view.on("statechange", function() {//調(diào)用go中定義的方法LoadNameAndPwdvar data = view.LoadNameAndPwd();//解析json,轉(zhuǎn)換成對(duì)象data = JSON.parse(data);$(#name).value = data.name;$(#pwd).value = data.pwd;}); </script> </html>

最后的顯示結(jié)果如下:

我的數(shù)據(jù)庫(kù)表數(shù)據(jù)如下:

?

轉(zhuǎn)載于:https://www.cnblogs.com/jkko123/p/10837729.html

總結(jié)

以上是生活随笔為你收集整理的go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。