我们可以通过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();
}

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

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

    详细的文档请看下面两个链接: https://sciter.com/docs/content/sciter/Element.htm https://sciter.com/docs/content/sc ...

  2. c# Windows Service 桌面上显示UI

    介绍 本文的目的是说明如何从Windows Vista中的服务正确启动交互式进程,以及演示如何以完全管理员权限启动该进程.交互式过程是能够在桌面上显示UI的过程. 本文介绍如何创建一个名为Loader ...

  3. go语言使用go-sciter创建桌面应用(五) 加载元素资源

    有些时候我们需要动态的给某个UI元素加载内容或数据. demo6.go代码如下: package main; import ( "github.com/sciter-sdk/go-scite ...

  4. Ubuntu创建桌面快捷方式

    默认情况下,ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,只需要右键-复制-桌面 就Ok,如图: 上面的方法是通过系统自 ...

  5. Windows中创建桌面快捷方式

    Windows中创建桌面快捷方式 -------------- -------------- -------------- --------------

  6. robot创建桌面图标(转载)

    桌面ride图标,安装之后会自动创建(偶尔也会创建失败),创建桌面图标方法如下: 1. 新建快捷方式 在桌面右击鼠标,弹出的菜单选择 新建-快捷方式 ,然后在"请键入对象"的位置输 ...

  7. Qt之创建桌面和开始菜单快捷方式

    将安装好的酷狗拷贝到C:\data目录中 1.创建桌面快捷方式 QFile::link("C:/data/KuGou.exe", QStandardPaths::writableL ...

  8. Swift3.0语言教程使用编码创建和初始化字符串

    Swift3.0语言教程使用编码创建和初始化字符串 使用编码创建和初始化字符串 创建和初始化字符串除了可以使用上文中提到的方法外,还可以使用init(coder:)方法,此方法一般不常使用,其语法形式 ...

  9. Swift3.0语言教程使用指针创建和初始化字符串

    Swift3.0语言教程使用指针创建和初始化字符串 Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性.C语言中为我们提供了指针,Swift也不例 ...

随机推荐

  1. Zabbix 3.0 LTS安装配置

    关于Zabbix监控项类型的官网介绍: https://www.zabbix.com/documentation/3.4/zh/manual/config/items/itemtypes zabbix ...

  2. 最干净,最便捷的卸载Mysql

    由于没有卸干净Mysql,用一下就崩溃了,使用这个步骤,都不用重装系统 1,停止Mysql服务,卸载MySQL 2,删除安装目录及数据存放目录 注: 默认安装路径:C:\Program Files\M ...

  3. ArcGIS 栅格数据教程

    ArcGIS 栅格数据教程 全部8个教程,带详细操作步骤和原始数据. 技术咨询:谢老师,135_4855_4328,xiexiaokui#139.com ArcGIS 10.5 此教程中的练习将使用样 ...

  4. spring boot 访问jsp 弹出下载

    在pom.xml中加入以下jar 包 <!-- 引入Spring Boot 内嵌的Tomcat对jsp的解析包--><dependency> <groupId>or ...

  5. tomcat中的类加载机制

    Tomcat中的类加载机制符合JVM推荐的双亲委派模型,关于JVM的类加载机制不多说,网上很多资料. 1. Tomcat类加载器过程. tomcat启动初始化阶段创建几个类加载器: private v ...

  6. linux中weblogic相关命令操作

    在weblogic的目录下找到bin目录,其中有startWeblogic.sh.startManagerWeblogic.sh等 首先需要启动startWeblogic.sh,这个是管理服务,也就是 ...

  7. Linq to sql 之 事务

    描述:linq 是自带事物的.如果建了两个linq to sql 类,各自访问不同的数据库,事物如何保证呢. 验证:采用常用的COM+事务来验证一下是否有效. ServiceConfig config ...

  8. WPF HyperLink链接下划线隐藏

    两种方法: 1.在Grid标签内添加资源样式. <Grid.Resources> <Style TargetType="Hyperlink"> <Se ...

  9. FileItem类的常用方法(关于文件上传的)

    1.boolean  isFormField().isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段.如果是普通文本表单字段,返回一个tr ...

  10. display:none和visibility:hidden

    display:none和visibility:hidden的区别在哪儿? “这个问题简单?”我心里头暗自得意,按耐住自己得意又紧张的小心脏,自信满满地说,“这两个声明都可以让元素隐藏,不同之处在于d ...