欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)在任務(wù)欄里提醒你喝水的兔子

 更新時(shí)間:2023年01月10日 11:51:24   作者:六號(hào)積極分子  
這篇文章主要為大家介紹了Go語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)在任務(wù)欄里提醒你喝水的兔子示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

之前看到 RunCat 一只可以在電腦上奔跑貓,其主要的功能是監(jiān)控電腦的CPU、內(nèi)存的使用情況,使用越多跑的越快。所以準(zhǔn)備做一只在任務(wù)欄里的兔子,主要使用 Go 語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的到點(diǎn)拜年的兔子。

詳細(xì)設(shè)計(jì)

基本需求:

  • 打開應(yīng)用時(shí)可以在任務(wù)欄里顯示
  • 實(shí)現(xiàn)動(dòng)態(tài)兔子生成

實(shí)現(xiàn)一只在任務(wù)欄里的兔子?;揪褪且粋€(gè)應(yīng)用的圖標(biāo),并且圖標(biāo)是動(dòng)態(tài)變化的。使用 Go 開發(fā)的話可以使用 systray 工具包,能夠支持在任務(wù)欄里顯示圖標(biāo)。

 go get github.com/getlantern/systray

需要使用 goV1.12版本以上。安裝完后就可以在 main 文件中加入方法

func main() {
	systray.Run(onReady, onExit)
}
func onReady() {
	systray.SetIcon(icon.Data) // 
	systray.SetTitle("HappyRabbit")
	systray.SetTooltip("Happy New Year")
	mQuit := systray.AddMenuItem("Quit", "退出應(yīng)用")
	mTip1 := systray.AddMenuItem("change", "圖標(biāo)更新")
    	go func() {
		for {
			select {
			case <-mQuit.ClickedCh:
				systray.Quit()
				return
			case <-mTip1.ClickedCh:
				var data [][]byte
                picData := getIcon()
			    systray.SetIcon(picData)
			}
		}
	}()
}

以上代碼就是打開應(yīng)用時(shí)先使用默認(rèn)的圖標(biāo),點(diǎn)擊圖標(biāo)更新時(shí)就可以實(shí)現(xiàn)圖標(biāo)的變更。主要使用了設(shè)置圖標(biāo)的方法是 systray.SetIcon([]byte)。

需要注意,如果不是使用 ico 格式的圖標(biāo)可能會(huì)發(fā)生以下的錯(cuò)誤:

ERROR systray: systray_windows.go:845 Unable to set icon: The volume for a file has been externally altered so that the opened file is no longer valid. 

完成圖標(biāo)更新的需求后就可以進(jìn)一步實(shí)現(xiàn)動(dòng)態(tài)圖標(biāo)變更,從而實(shí)現(xiàn)一只能動(dòng)的拜年兔子。實(shí)現(xiàn)動(dòng)態(tài)化基本思路就是多張動(dòng)作圖片不斷地循環(huán)從而實(shí)現(xiàn)動(dòng)態(tài)。簡(jiǎn)單的實(shí)現(xiàn)就是可以將多個(gè)圖片都加載進(jìn)來(lái),然后使用循環(huán):

var data [][]byte
data1, _ := getIcon("./images/1.ico")
data2, _ := getIcon("./images/4.ico")
data3, _ := getIcon("./images/5.ico")
data = append(data, data1)
data = append(data, data2)
data = append(data, data3)
go func() { // 異步處理
    index := 0
    for {
        systray.SetIcon(data[index])
        time.Sleep(time.Second * 2)
        index++
        if index == 2 {
            index = 0
        }
    }
}()

以上更好的方式,我覺得可以使用 corn 定時(shí)任務(wù)去執(zhí)行,這樣就可以對(duì)定時(shí)任務(wù)進(jìn)行控制,想開就開,想關(guān)就關(guān)。

基本實(shí)現(xiàn)到這里就是完成了一個(gè)簡(jiǎn)單的任務(wù)欄顯示功能,但我在里面增加一個(gè)可以定時(shí)通過(guò) webhook 方式給自己的飛書通知消息,提醒該喝水了。

詳細(xì)飛書 webhook 的方式可以參考自己寫過(guò)的文章:http://www.dbjr.com.cn/article/272249.htm

安裝包

開發(fā)完之后就可以進(jìn)行編譯。不同的平臺(tái)編譯生成安裝包還是不一樣的。但在編譯的時(shí)候還需要注意不同環(huán)境的區(qū)別:

首先需要打開環(huán)境配置:

env GO111MODULE=on go build

Window

go build -ldflags -H=windowsgui

MacOS

在macOS,需要先創(chuàng)建一個(gè)應(yīng)用程序二進(jìn)制包包裝;基本的文件配置是

SystrayApp.app/
  Contents/
    Info.plist
    MacOS/
      go-executable
    Resources/
      SystrayApp.icns

這里主要實(shí)現(xiàn)了在任務(wù)欄兔子生成的效果,可以繼續(xù)迭代升級(jí),比如監(jiān)控系統(tǒng)的狀態(tài)、或者進(jìn)行一些異步的工作,通知事件或者其他的功能。因?yàn)槲也簧瞄L(zhǎng)做UI所以就沒有實(shí)現(xiàn)更加壯觀的結(jié)果。以上就是我實(shí)現(xiàn)的整個(gè)過(guò)程,有任何問(wèn)題歡迎指正。

效果展示

以上就是Go語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)在任務(wù)欄里提醒你喝水的兔子的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言設(shè)計(jì)任務(wù)欄提醒喝水的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語(yǔ)言排序與接口實(shí)例分析

    Go語(yǔ)言排序與接口實(shí)例分析

    這篇文章主要介紹了Go語(yǔ)言排序與接口,實(shí)例分析了排序與接口的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Go?Ticker?周期性定時(shí)器用法及實(shí)現(xiàn)原理詳解

    Go?Ticker?周期性定時(shí)器用法及實(shí)現(xiàn)原理詳解

    這篇文章主要為大家介紹了Go?Ticker?周期性定時(shí)器用法及實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 如何使用?Go?獲取你的?IP?地址(推薦)

    如何使用?Go?獲取你的?IP?地址(推薦)

    在Go語(yǔ)言中,獲取IP地址分為公共IP和私有IP兩種方式,公共IP地址通過(guò)外部API獲取,本文給大家介紹如何使用?Go?獲取你的?IP?地址,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Go語(yǔ)言基礎(chǔ)單元測(cè)試與性能測(cè)試示例詳解

    Go語(yǔ)言基礎(chǔ)單元測(cè)試與性能測(cè)試示例詳解

    這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)單元測(cè)試與性能測(cè)試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2021-11-11
  • Go語(yǔ)言CSP并發(fā)模型實(shí)現(xiàn)MPG

    Go語(yǔ)言CSP并發(fā)模型實(shí)現(xiàn)MPG

    這篇文章主要為大家介紹了Go語(yǔ)言CSP并發(fā)模型實(shí)現(xiàn)MPG圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • golang根據(jù)URL獲取文件名的示例代碼

    golang根據(jù)URL獲取文件名的示例代碼

    這篇文章主要為大家詳細(xì)介紹了golang根據(jù)URL獲取文件名,文中的示例代碼講解詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Go秒爬博客園100頁(yè)新聞

    Go秒爬博客園100頁(yè)新聞

    利用go語(yǔ)言的協(xié)程并發(fā)優(yōu)勢(shì)爬取網(wǎng)頁(yè)速度相當(dāng)之快,博客園100頁(yè)新聞標(biāo)題只需一秒即可全部爬取,跟著小編一起去看看如何實(shí)現(xiàn)的,希望大家可以從中受益
    2018-09-09
  • go語(yǔ)言分布式id生成器及分布式鎖介紹

    go語(yǔ)言分布式id生成器及分布式鎖介紹

    這篇文章主要為大家介紹了go語(yǔ)言分布式id生成器及分布式鎖介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • golang控制結(jié)構(gòu)select機(jī)制及使用示例詳解

    golang控制結(jié)構(gòu)select機(jī)制及使用示例詳解

    這篇文章主要介紹了golang控制結(jié)構(gòu)select機(jī)制及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Go語(yǔ)言的文件名、標(biāo)識(shí)符、關(guān)鍵字和包基礎(chǔ)教程

    Go語(yǔ)言的文件名、標(biāo)識(shí)符、關(guān)鍵字和包基礎(chǔ)教程

    Go的關(guān)鍵字不能被用作標(biāo)識(shí)符,這是一個(gè)重要的限制,以避免命名沖突和語(yǔ)法混淆,這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言文件名、標(biāo)識(shí)符、關(guān)鍵字和包的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06

最新評(píng)論