go语言使用go-sciter创建桌面应用(二) ui元素查找,增加,删除,修改

我们可以通过go-sciter给我们提供的方法,方便的对html,css编写的UI界面进行增删改查。

demo3.go代码如下:

package main;

import (
	"github.com/sciter-sdk/go-sciter"
	"github.com/sciter-sdk/go-sciter/window"
	"log"
	"fmt"
)

//一些基础操作
func base(root *sciter.Element) {
	//通过ID选择元素
	ul, _ := root.SelectById("list");
	//获取元素的文本
	text, _ := ul.Text();
	fmt.Println("text:", text);
	//获取元素的html
	//参数为真,则返回元素外部html
	//参数为假,则返回元素内部html
	text, _ = ul.Html(false);
	fmt.Println("html:", text);
	//获取子元素个数
	n, _ := ul.ChildrenCount();
	fmt.Println(n);
}

//动态的添加元素
func addElement(root *sciter.Element) {
	//创建一个元素
	add, _ := sciter.CreateElement("li", "444");
	//设置元素的属性
	add.SetAttr("data", "add");

	//通过标签和ID来选择元素,类似jquery
	ul, _ := root.SelectFirst("ul#list");
	//插入元素,下标从0开始
	err := ul.Insert(add, 3);
	if err != nil {
		log.Fatal("添加元素失败");
	}

	add2, _ := sciter.CreateElement("li", "");
	err2 := ul.Insert(add2, 4);
	//注意这里,元素先insert后再去设置html才有效
	//设置添加元素的html
	add2.SetHtml("<a href=‘http://www.baidu.com‘>555</a>", sciter.SIH_REPLACE_CONTENT);
	if err2 != nil {
		log.Fatal("添加元素失败");
	}
}

//删除元素
func delElement(root *sciter.Element) {
	ul, _ := root.SelectFirst("ul#list");
	//获取第一个子元素,下标从0开始
	li, _ := ul.NthChild(0);
	//删除元素
	li.Delete();

	//我们也可以用css选择器直接选择要删除的元素
	//注意css里面的nth-child(n)下标从1开始
	li2, _ := root.SelectFirst("ul#list>li:nth-child(2)");
	//删除元素
	li2.Delete();
}

//修改元素
func updElement(root *sciter.Element) {
	li, _ := root.SelectFirst("ul#list>li:nth-child(1)");
	//给元素设置样式
	li.SetStyle("color", "#f00");
	//给元素设置html
	//参数一:html内容
	//参数二:html放在哪里,SIH_REPLACE_CONTENT表示替换旧内容
	li.SetHtml("<a href=‘http://www.baidu.com‘>baidu.com</a>", sciter.SIH_REPLACE_CONTENT);
	//在最后面追加内容
	li.SetHtml("哈哈", sciter.SIH_APPEND_AFTER_LAST);
	//设置元素属性
	li.SetAttr("test", "test");
	li2, _ := root.SelectFirst("ul#list>li:nth-child(2)");
	//设置文本
	li2.SetText("我改我改");
}

//查找元素
func selElement(root *sciter.Element) {
	//通过css选择器选择元素,会返回*Element的slice
	root.Select("ul#list>li");
	//通过选择器返回第一个元素
	//也是调用的Select,不过只返回第一个元素
	root.SelectFirst("ul#list>li");
	//通过元素ID
	root.SelectById("list");
	//选择父元素
	//参数二:表示深度
	root.SelectParent("li", 1);
	//返回选择器匹配唯一子元素,如果没有或匹配多个,会引发Panic
	root.SelectUnique("ul#list>li:nth-child(1)");
}

func main() {
	//创建一个新窗口
	//这里参数一和参数二都使用的默认值
	//DefaultWindowCreateFlag = SW_TITLEBAR | SW_RESIZEABLE | SW_CONTROLS | SW_MAIN | SW_ENABLE_DEBUG
	//DefaultRect = &Rect{0, 0, 300, 400}
	w, err := window.New(sciter.DefaultWindowCreateFlag, sciter.DefaultRect);
	if err != nil {
		log.Fatal(err);
	}
	//设置标题
	w.SetTitle("文本html");
	html := `
			<html>
			<body>
				<ul id="list" name="list">
					<li>111</li>
					<li>222</li>
					<li>333</li>
				</ul>
			</body>
			</html>`;
	//加载html,从一个字符串变量中
	w.LoadHtml(html, "");
	//窗口获取根元素,这里应该是html
	root, _ := w.GetRootElement();

	//这里把一些操作单独写成函数方便查看
	base(root);
	addElement(root);
	delElement(root);
	updElement(root);
	selElement(root);

	//显示窗口
	w.Show();
	//运行窗口,进入消息循环
	w.Run();
}

时间: 2024-08-08 21:38:05

go语言使用go-sciter创建桌面应用(二) ui元素查找,增加,删除,修改的相关文章

go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应

详细的文档请看下面两个链接: https://sciter.com/docs/content/sciter/Element.htm https://sciter.com/docs/content/sciter/Event.htm demo8.html代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tisc

如何创建桌面应用程序

上次我们创建了控制台应用程序,今天我们就谈谈如何创建桌面应用程序. 第一步.我们打开VS2017,出现如下界面(此界面前面我们已讲过,这里就不再谈论了): 第二步.单击“文件(F)--->新建(N)--->项目(P)...”就弹出“新建项目”对话框,其界面如下: 第三步.在此对话框中选择“Visual C#--->Windows 桌面--->WPF 应用(.NET Framework)”,并且选择好文件保存的路径(即界面的“位置”),最后单击“确定”按钮即可创建控制台应用程序,其界

创建桌面快捷图标

分析桌面程序的源码发现具有接收创建桌面快捷图标的广播接受,创建快捷突变即发送广播的方式来实现的.下面来分析创建桌面快捷图标的过程. 1. 在应用程序的第一个Activity,添加创建快捷图标的方法, installShortCut(); // 创建桌面快捷图标 private void intallShotCut() { // 定义广播通知桌面创建快捷图标 Intent intent = new Intent(); intent.setAction("com.android.launcher.a

手把手教你在ubuntu下创建桌面快捷方式

习惯使用windows的朋友来说创建桌面快捷方式简直就是so easy, 鼠标右键点击文件-->选择发送桌面快捷方式,就OK了.对于ubuntu下该怎样创建桌面快捷方式呢?下面以创建eclipse的快捷方式为例,简单介绍一下. 环境: 1)系统版本:Ubuntu 14.04 2)桌面环境:Unity 3)已经下载并解压eclipse(免安装)到/opt目录下 详细步骤: 1)新建文件eclipse.desktop,命令如下: sudo vim /usr/share/applications/ec

Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单

{================================================================= 功 能: 创建 桌面.发送到....快速启动栏.开始菜单.程序菜单.右键菜单 快捷方式 参 数: FileName : 快捷方式执行文件名 Description : 快捷方式描述信息 Arguements : 快捷方式执行参数 ShowName : 快捷方式显示名称 Location : 快捷方式类别 id : 需设置状态的队列号(255 为设置) Create

ios 创建桌面快捷方式

iOS上创建桌面快捷方式 应用场景: 在iOS设备桌面创建app内某一个模块或页面的快捷方式,通过该快捷方式可以直接进入相应模块或页面.目前app内有该功能的有高德一键导航,360安全卫士的小火箭. 技术原理: 在iOS开发中可以使用openUrl的方式打开一个网页,并通过Safari浏览器的发送到主屏幕从而创建一个网页的快捷方式,这篇文章就是利用这个方法来创建一个app的桌面快捷方式.首先在app内部开启一个轻量级的HttpServer,利用openurl:127.0.0.1 的方式打开本地页

ubuntu12.4创建桌面快捷方式(三种方法)

ubuntu12.4创建桌面快捷方式(三种方法) ubuntu12.4 不能在桌面"右键-->创建启动器" ,所以要另寻方法来创建桌面快捷图标. 1.方法一: 在文件系统  /usr/share/applications  存放着ubuntu 自动安装软件的快捷方式: 如:直接右键 "终端"然后复制到桌面: 双击就可以打开,这下不需用快捷键  Ctrl+Alt+T  了: 2.方法二: 鼠标按住图标往桌面拉,同时按住 Alt  键: 拖到桌面的时候会看到有几个

ubuntu创建桌面快捷方式

ubuntu11.04之前的版本,鼠标在桌面右键可以有更方便的创建快捷方式的方法,之后就没有了. 1.创建一个文件,将下面的代码拷贝进去 这里我们只需要关注3个地方,分别为Exec=软件执行文件的路径,Icon=快捷方式图标(如果有的话),Name=快捷方式名称.根据自己软件按转的位置修改代码,保存之后关闭文件.下面以eclipse为例. [Desktop Entry] Categories=Development; Comment[zh_CN]= Comment= Exec=/home/owe

Android设置壁纸和创建桌面图标

写了个小Demo,实现了设置壁纸和创建桌面图标的逻辑: 创建壁纸比较简单,将Drawable转为Bitmap,然后直接用setWallpaper就行了: Bitmap bitmap = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.wallpaper); try { Main.this.setWallpaper(bitmap); } catch (IOException e) { e.printStackTra