教程五:go语言windows gui界面开发之walk 控件学习第四节之WEB控件
go walk界面开发浏览器网页访问工具和网址超链接
·
一、内嵌浏览器网页查看页面
1.1 实现方法:WebView控件
- 注意:该控件当前会报脚本出错,后续找时间再研究;
1.2 效果图

1.3 实现代码
// Copyright 2010 The Walk Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"strings"
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
)
func main() {
var le *walk.LineEdit
var wv *walk.WebView
MainWindow{
// Icon: Bind("'../img/' + icon(wv.URL) + '.ico'"),
Title: "Walk WebView Example'",
MinSize: Size{800, 600},
Layout: VBox{MarginsZero: true},
Children: []Widget{
LineEdit{
AssignTo: &le,
Text: Bind("wv.URL"),
OnKeyDown: func(key walk.Key) {
if key == walk.KeyReturn {
wv.SetURL(le.Text())
}
},
},
WebView{
AssignTo: &wv,
Name: "wv",
URL: "https://www.baidu.com",
},
},
Functions: map[string]func(args ...interface{}) (interface{}, error){
"icon": func(args ...interface{}) (interface{}, error) {
if strings.HasPrefix(args[0].(string), "https") {
return "check", nil
}
return "stop", nil
},
},
}.Run()
}
二、超链接,可以跳转网页
2.1 实现方法:LinkLabel控件
- 第一步:写一段html语句到Text中,其中需要跳转部分用标签包裹;
- 第二步:LinkLabel控件的OnLinkActivated事件中调用打开网站命令即可;
2.2 效果图如下:

2.3 代码如下:
package main
import (
"log"
"os"
"os/exec"
"syscall"
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
)
// 创建日志服务
func CreateLogService() *log.Logger {
file := "log.txt"
logFile, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm) // 以读写方式打开文件,如果没有该名称文件则自动创建,以追加的方式写入文件
if err != nil {
return nil
}
logger := log.New(logFile, "[logInfo:]", log.LstdFlags|log.Lshortfile) // 将文件设置为loger作为输出
return logger
}
func main() {
logger := CreateLogService()
if _, err := (MainWindow{
Title: "Walk LinkLabel Example",
MinSize: Size{300, 200},
Layout: VBox{},
Children: []Widget{
LinkLabel{
MaxSize: Size{100, 0},
Text: `I can contain multiple links like <a id="this" href="https://www.baidu.com/">this</a> or <a id="that" href="https://github.com/lxn/walk">that one</a>.`,
OnLinkActivated: func(link *walk.LinkLabelLink) {
// 有GUI调用 即界面闪现cmd命令框
// exec.Command(`cmd`, `/c`, `start`, link.URL()).Start()
// 无GUI调用 即界面不闪现cmd命令框
cmd := exec.Command(`cmd`, `/c`, `start`, link.URL())
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
cmd.Start()
logger.Printf("id: '%s', url: '%s'\n", link.Id(), link.URL())
},
},
},
}).Run(); err != nil {
log.Fatal(err)
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)