【LUA】时间面板显示

最近看了个HS的时间显示的例子,顺便学习了一下这个lua定义函数的方法,被折腾了许久,最后竟然是gpt解答了。

定义方式

-- 定义一个对象
local myObject = {isVisible = false,
}-- 定义对象的方法
function myObject:toggleShow()self.isVisible = not self.isVisibleif self.isVisible thenprint("Object is now visible")elseprint("Object is now hidden")end
end-- 调用对象方法
myObject:toggleShow()  -- 第一次调用,将显示 "Object is now visible"
myObject:toggleShow()  -- 第二次调用,将显示 "Object is now hidden"

在这个示例中,我们定义了一个名为 myObject 的对象,它有一个布尔属性 isVisible,初始值为 false。然后,我们使用 function obj:toggleShow() 语法定义了 toggleShow 方法,它会切换 isVisible 属性的值,并根据该值打印相应的消息。

调用对象方法时,我们使用了 : 运算符,它会自动传递对象本身作为第一个参数给方法。因此,myObject:toggleShow() 实际上等同于 myObject.toggleShow(myObject),这样方法内部就可以使用 self 关键字来访问对象的属性和方法。

应用:显示日期

local obj={}
obj.__index = obj
print("obj is:",obj)function obj:init()obj.canvas = hs.canvas.new({x=0, y=0, w=0, h=0}):show()obj.canvas[1] = {type = "rectangle",action = "fill",fillColor = {hex="#000000", alpha=0.75}}obj.canvas[2] = {type = "text",text = "",textSize = 120,textAlignment = "center",}endfunction obj:toggleShow()if obj.timer thenobj.timer:stop()obj.timer = nilobj.canvas:hide()elselocal time = os.date("%H:%M\n%A\n%Y-%m-%d")local cscreen = hs.screen.mainScreen()local cres = cscreen:fullFrame()obj.canvas:frame({x = cres.x+cres.w*0.15/2,y = cres.y+cres.h*0.30/2,w = cres.w*0.85,h = cres.h*0.50})obj.canvas[2].text = timeobj.canvas:show()obj.timer = hs.timer.doAfter(2, function()obj.canvas:hide()obj.timer = nilend)end
endobj:init()hs.hotkey.bind({"alt"}, "t", function() obj.toggleShow(obj) end)print("now obj:", obj)return obj

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营29期|day54 任务以及具体安排

第九章 动态规划part11 123.买卖股票的最佳时机III // 版本一 class Solution {public int maxProfit(int[] prices) {int len prices.length;// 边界判断, 题目中 length > 1, 所以可省去if (prices.length 0) return 0;/** 定义 5 种状态:* 0: 没有操作, 1: 第一次买入…

OpenCV中图像的HSV色彩空间

在HSV 色彩空间中H, S, V 这三个通道分别代表着色相(Hue),饱和度(Saturation)和明度(Value), 原本输出的HSV 的取值范围分别是0-360, 0-1, 0-1; 但是为了匹配目标数据类型OpenCV 将每个通道的取值范围都做了修改,于是就变成了0-180, 0-255, 0-255 impo…

RabbitMQ保证消息的可靠性

1. 问题引入 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange消息到达exchange后未到达queue MQ宕机&…

Leetcode 21-25题

合并两个有序链表 将两个升序链表合并为一个新的升序链表。 用两个指针指向两个链表的表头,然后每次比较一下哪个值小,将较小的节点接到答案后面即可。 ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {auto dummy new ListNode(), p du…

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比 目录 EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【EI级】Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间…

云原生概念

云原生是一条使用户能: 1.低运维、 2.敏捷的、 3.以可扩展、可复制的方式, 最大化的利用”云“的能力、发挥”云“的价值的最 佳路径 云原生,是一条最佳路径或实践 参考:https://edu.aliyun.com/course/314164/lesson/7815

JavaScript 中实现常见数据结构:栈、队列与树

文章目录 JavaScript 中实现常见数据结构:栈、队列与树引言一、栈(Stack)二、队列(Queue)三、树(Tree)结语与祝福代码 JavaScript 中实现常见数据结构:栈、队列与树 引言 在前端开…

【已解决】引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

这种问题产生一般都会手足无措,包括笔者,但是不要慌,这种问题一般都是内存泄漏引起的。例如读者要访问一个已经被析构或者释放的变量,当然访问不了,导致存在问题。这时候读者应该从哪里产生内存泄漏这方面进行考虑&…

【VSCode】设置 一键生成vue模板 的快捷入口

问题 每次写一个组件的时候,都需要去手敲默认结构或者是复制粘贴,十分的麻烦! 解决办法 文件 > 首选项 > 用户代码片段 > vue.json 配置vue模板 其中prefix是用来触发代码段的内容,即模版的快捷入口;body里…

【SpringBoot2】Spring容器的本质就是两个HashMap

做为Java程序员,我们就是Spring的用户,Spring的影子在我们的代码里几乎是无处不在,那Spring到底是什么,带给我们什么,如何工作的呢?这个简单问题貌似又不太好讲。例如如果要问一下什么是Spring框架, 可以找到大量的解答,基本内容如下: Spring是一个开源的应用程序框架…

【Funny Game】 吃豆人

目录 【Funny Game】 吃豆人 吃豆人 文章所属专区 Funny Game 吃豆人 吃豆人,这款经典游戏如今依旧魅力四射。玩家需操控小精灵,在迷宫内吞噬所有豆子,同时避开狡猾的鬼怪。当吃完所有豆子后,便可消灭鬼怪,赢得胜利。…

springboot197基于springboot的毕业设计系统的开发

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的毕业设计系统的开发 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 …

[AIGC] 利用 ChatGpt 深入理解 Java 虚拟机(JVM)的内存分布

深入理解 Java 虚拟机(JVM)的内存分布 Java 虚拟机(JVM)是 Java 编程语言的核心运行环境,它负责解释和执行 Java 字节码。在 JVM 中,内存被划分为几个不同的区域,每个区域都有特定的用途。了解…

stack的用法

介绍 翻译为栈&#xff0c;是一个后进先出的容器。 访问 只能通过top()函数来访问栈顶元素 常用函数 1.push(x):将x入队 2.top():获得队首元素 3.empty():判断是否为空 4.size():返回队内元素个数 #include <iostream> #include <stack>//引用stack头文件 us…

c++作业

Shell中的函数&#xff08;先调用后使用的原则&#xff09;&#xff08;没有申明&#xff09; &#xff08;Function&#xff09; 函数名&#xff08;有没有参数根据调用格式&#xff09;&#xff08;不能写任何内容&#xff09; { 函数体 Return 返回值 } 函数名 ----》…

Go语言中的加密艺术:深入解析crypto/subtle库

Go语言中的加密艺术&#xff1a;深入解析crypto/subtle库 引言crypto/subtle库概览ConstantTimeCompare函数深入解析ConstantTimeSelect函数应用详解ConstantTimeLessOrEq函数实践指南安全编程实践性能优化与最佳实践与其他加密库的比较总结 引言 在当今快速发展的互联网时代&…

作为一个程序员,最少要看过这几部电影吧?

计算机专业必看的几部电影 计算机专业必看的几部电影&#xff0c;就像一场精彩的编程盛宴&#xff01;《黑客帝国》让你穿越虚拟世界&#xff0c;感受高科技的魅力&#xff1b;《社交网络》揭示了互联网巨头的创业之路&#xff0c;《源代码》带你穿越时间解救世界&#xff0c;…

SG5032EEN晶体振荡器SPXO

5G将使通信流量呈指数级增长&#xff0c;5G通信网络需要高速和宽带&#xff0c;同时将噪声水平保持在最低水平&#xff0c;这可以通过通信设备的高频低抖动参考时钟来实现&#xff0c;使用上述晶体振荡器SPXO&#xff0c;客户可以输入一个具有极低相位抖动和功率的高频参考时钟…

P5194 Scales S——dfs(前缀和剪枝)

传送门https://www.luogu.com.cn/problem/P5194手切第一遍&#xff0c;没想到可以用前缀和剪枝&#xff0c;并且是从小到大搜了&#xff0c;不出意外40分TLEWA 第二遍&#xff1a;代码及思路 // Problem: // P5194 [USACO05DEC] Scales S // // Contest: Luogu // UR…

施美药业回复监管“二十问”:业务信披存疑,最大客户为关联方

近日&#xff0c;江西施美药业股份有限公司&#xff08;下称“施美药业”&#xff09;更新在深交所主板上市的申请审核动态&#xff0c;对深交所于2023年7月24日发布的第一轮审核问询函进行了回复。目前&#xff0c;深交所已发出第二轮审核问询函。 具体而言&#xff0c;施美药…