首頁 >後端開發 >Golang >golang fyne 中按住按鈕

golang fyne 中按住按鈕

WBOY
WBOY轉載
2024-02-11 15:20:20574瀏覽

golang fyne 中按住按钮

php小編魚仔將為大家介紹Golang Fyne中按住按鈕的技巧和使用方法。 Fyne是一個用於建立跨平台圖形使用者介面的輕量級框架,而按住按鈕則是其中的重要功能。透過按住按鈕,使用者可以實現一系列連續操作,如拖曳、繪圖等。本文將詳細說明如何在Golang Fyne中實現按住按鈕的功能,並提供實用的程式碼範例和操作步驟,幫助讀者快速掌握這項技巧。無論是初學者或有一定經驗的開發者,都能從本文中獲得實用的知識和技巧,提升自己在Golang Fyne中的開發能力。請關注後續內容!

問題內容

使用 fyne GUI 框架,可以輕鬆建立具有基本功能的簡單 GUI。 我無法找到一種方法來檢測用戶按下並按住按鈕一段時間。我只能檢測按鈕是否被點擊。這有可能嗎?

解決方法

fyne 中的小部件具有最可能使用的功能。當小部件不提供所需的功能時,可以對其進行擴充。 可以在此處查看圖示可點擊的範例。 在此範例中,介面fyne/v2.Tappable 正在實現,其中還包含一個圖標,這會導致可點擊的圖標。

為了讓按鈕可保持,我們需要實作一個接口,它可以註冊 mousedown 和 mouseup 事件。這個介面是fyne/v2/driver/desktop.Mouseable。

這就是它的樣子:

package main
import (
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/widget"
    "fyne.io/fyne/v2/driver/desktop"
    "log"
)

type holdableButton struct {
    widget.Button
}
func newHoldableButton(label string) *holdableButton {
    button := &holdableButton{}
    button.ExtendBaseWidget(button)
    button.Text=label
    return button
}

func (h *holdableButton) MouseDown(*desktop.MouseEvent){
    log.Println("down")
}
func (h *holdableButton) MouseUp(*desktop.MouseEvent){
    log.Println("up")
}

func main() {
    a := app.New()
    w := a.NewWindow("Holdable")
    w.SetContent(newHoldableButton("Button"))
    w.ShowAndRun()
}

要注意的是:Mouseable介面不會透過名稱出現,只需要匯入驅動包即可引用desktop.MouseEvent。但與 golang 中的情況一樣,該介面是透過建立 MouseUp 和 MouseDown 這兩個方法來實現的,即使您只「需要」一個,這兩個方法也需要存在,否則這些都不起作用。

感謝 andy.xyz 為我指明了正確的方向。

以上是golang fyne 中按住按鈕的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除