最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

基本需求:

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

實(shí)現(xiàn)一只在任務(wù)欄里的兔子?;揪褪且粋€(gè)應(yīng)用的圖標(biāo),并且圖標(biāo)是動態(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)可能會發(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)動態(tài)圖標(biāo)變更,從而實(shí)現(xiàn)一只能動的拜年兔子。實(shí)現(xiàn)動態(tài)化基本思路就是多張動作圖片不斷地循環(huán)從而實(shí)現(xiàn)動態(tài)。簡單的實(shí)現(xiàn)就是可以將多個(gè)圖片都加載進(jìn)來,然后使用循環(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í)行,這樣就可以對定時(shí)任務(wù)進(jìn)行控制,想開就開,想關(guān)就關(guān)。

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

詳細(xì)飛書 webhook 的方式可以參考自己寫過的文章:http://m.fzitv.net/article/272249.htm

安裝包

開發(fā)完之后就可以進(jìn)行編譯。不同的平臺編譯生成安裝包還是不一樣的。但在編譯的時(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ù)迭代升級,比如監(jiān)控系統(tǒng)的狀態(tài)、或者進(jìn)行一些異步的工作,通知事件或者其他的功能。因?yàn)槲也簧瞄L做UI所以就沒有實(shí)現(xiàn)更加壯觀的結(jié)果。以上就是我實(shí)現(xiàn)的整個(gè)過程,有任何問題歡迎指正。

效果展示

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

相關(guān)文章

  • Go語言實(shí)現(xiàn)字符串切片賦值的方法小結(jié)

    Go語言實(shí)現(xiàn)字符串切片賦值的方法小結(jié)

    這篇文章主要給大家介紹了Go語言實(shí)現(xiàn)字符串切片賦值的兩種方法,分別是在for循環(huán)的range中以及在函數(shù)的參數(shù)傳遞中實(shí)現(xiàn),有需要的朋友們可以根據(jù)自己的需要選擇使用。下面來一起看看吧。
    2016-10-10
  • go嵌套匿名結(jié)構(gòu)體的初始化詳解

    go嵌套匿名結(jié)構(gòu)體的初始化詳解

    這篇文章主要介紹了go嵌套匿名結(jié)構(gòu)體的初始化詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang操作excel的方法

    Golang操作excel的方法

    這篇文章主要介紹了Golang操作excel的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Go語言中的上下文取消操作詳解

    Go語言中的上下文取消操作詳解

    這篇文章主要給大家介紹了關(guān)于Go語言中上下文取消操作的相關(guān)資料,本文將解釋我們?nèi)绾卫蒙舷挛膸斓娜∠匦?,并通過一些模式和最佳實(shí)踐來使用取消,使你的程序更快、更健壯。需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Golang語言如何讀取http.Request中body的內(nèi)容

    Golang語言如何讀取http.Request中body的內(nèi)容

    這篇文章主要介紹了Golang語言如何讀取http.Request中body的內(nèi)容問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • go原生庫的中bytes.Buffer用法

    go原生庫的中bytes.Buffer用法

    這篇文章主要介紹了go原生庫的中bytes.Buffer用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 使用Go語言實(shí)現(xiàn)找出兩個(gè)大文件中相同的記錄

    使用Go語言實(shí)現(xiàn)找出兩個(gè)大文件中相同的記錄

    這篇文章主要為大家詳細(xì)介紹了使用Go語言實(shí)現(xiàn)找出兩個(gè)大文件中相同的記錄的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • Go語言獲取文件的名稱、前綴、后綴

    Go語言獲取文件的名稱、前綴、后綴

    這篇文章主要介紹了Go語言獲取文件的名稱、前綴、后綴,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言開發(fā)前后端不分離項(xiàng)目詳解

    Go語言開發(fā)前后端不分離項(xiàng)目詳解

    這篇文章主要為大家介紹了Go語言開發(fā)前后端不分離項(xiàng)目詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go語言到底有沒有引用傳參(對比 C++ )

    Go語言到底有沒有引用傳參(對比 C++ )

    這篇文章主要介紹了Go 到底有沒有引用傳參(對比 C++ ),需要的朋友可以參考下
    2017-09-09

最新評論

宝坻区| 云和县| 九江县| 吉安市| 高青县| 通化县| 敦煌市| 寻乌县| 江口县| 颍上县| 乡城县| 高淳县| 安多县| 淅川县| 镇坪县| 阳原县| 滨州市| 潜江市| 巴青县| 锦屏县| 集安市| 清苑县| 庄河市| 合作市| 乌鲁木齐市| 茂名市| 永丰县| 柏乡县| 汉阴县| 汤阴县| 沽源县| 道孚县| 三河市| 安塞县| 荔波县| 海伦市| 元江| 福泉市| 甘南县| 永顺县| 谷城县|