教程五:go语言windows gui界面开发之walk 控件学习第四节之WEB控件

一、内嵌浏览器网页查看页面

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)
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘帝阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值