显示和处理golang中的fyne窗口

vnjpjtjt  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(264)

我试图让这个脚本能够显示GUI(drawMessage)每当函数initConnection从服务器端接收到命令时,如您所见,此脚本调用drawMessage()从func initConnection()当接收到“ShowWindow”命令时此代码仅在第一次接收命令后第一次关闭GUI时才能正常工作,当我再次尝试发送命令时没有弹出窗口如何使它在每次收到命令时都能做出响应?

package main

import (
    "fyne.io/fyne/canvas"
    "fyne.io/fyne/container"
    "fyne.io/fyne/v2/app"
)

var done = make(chan struct{})

func initConnection(receivedCommand string) {
    switch receivedCommand {
    case "ShowWindow":
        done <- struct{}{}
    }
}
func main() {

    go initConnection()

    for {
        select {
        case <-done:
            DrawMessage()
        }
    }
}

func DrawMessage() {
    myApp := app.New()
    myWindow := myApp.NewWindow("New GUI")
    image := canvas.NewImageFromFile("message.png")
    image.FillMode = canvas.ImageFillOriginal
    content := container.NewVBox(container.NewCenter(image))
    myWindow.SetContent(content)
    myWindow.ShowAndRun()
}
tkclm6bt

tkclm6bt1#

正如您在上一个问题中所建议的(显示GUI时后台处理功能),您应该将App.Run与Window.Show分开...您正在运行的应用程序使其无法退出,但您可以在启动Fyne应用程序之后显示窗口。

相关问题