登录
首页 >  Golang >  Go问答

如何在 Fyne 中有条件地显示/隐藏工具栏按钮?

来源:stackoverflow

时间:2024-03-16 22:42:30 330浏览 收藏

**如何如何在 Fyne 中有条件地显示/隐藏工具栏按钮?** 在 Fyne 中创建动态工具栏按钮,以响应用户操作至关重要。本文将指导您如何根据条件显示或隐藏按钮,从而增强用户界面。通过了解 .ToolbarObject() 方法的局限性以及使用 ToolbarAction API,您可以实现响应式且直观的工具栏行为。

问题内容

我正在尝试让用户录制音频。我想要一个“录制”按钮,当他们不录制时,以及当他们录制时将其更改为“停止录制”按钮。此外,我希望这能起作用,但两个按钮始终显示在工具栏上:

var startRecording, stopRecordingFunc func()

recordButton := widget.NewToolbarAction(theme.MediaRecordIcon(), startRecording)
stopButton := widget.NewToolbarAction(theme.MediaStopIcon(), stopRecordingFunc)

startRecording = func() {
    if !recording {
        recording = true
        stopRecording = make(chan struct{})
        recordWg.Add(1)
        go func() {
            recordAudio("output.wav", stopRecording, &recordWg)
            recording = false
            recordButton.ToolbarObject().Show()
            stopButton.ToolbarObject().Hide()
        }()
        recordButton.ToolbarObject().Hide()
        stopButton.ToolbarObject().Show()
    }
}

stopRecordingFunc = func() {
    if recording {
        close(stopRecording)
        recordWg.Wait()
        recording = false
        recordButton.ToolbarObject().Show()
        stopButton.ToolbarObject().Hide()
    }
}

recordButton.OnActivated = startRecording
stopButton.OnActivated = stopRecordingFunc

toolbar := widget.NewToolbar(recordButton, stopButton)
stopButton.ToolbarObject().Hide()

我尝试添加对 refresh() 的调用,但没有什么区别。

如何有条件地显示/隐藏工具栏按钮?


正确答案


当您调用 .ToolbarObject() 时,它正在创建一个新实例 - 该实例根本不在工具栏中。 要操作工具栏的内容,您需要使用工具栏 API,或者直接在 ToolbarAction 上公开的 API。

从您的代码看来,您最好使用 SetIcon 来更改外观。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何在 Fyne 中有条件地显示/隐藏工具栏按钮?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>