我正在 vs code 上的 Go 中运行一个项目,当我运行它时,将内容输出打印到终端。我希望能够分叉 x 个子进程,其中每个子进程都可以呈现自己的对话框并向其输出数据。我发现 fyne 是一个简单的 Go 用户界面,当我运行
runApp()
时,会出现一个小对话框。我不知道如何同时打开多个对话框、调整它们的大小以及向它们记录/打印文本。每个子进程都应该能够随时将任何文本打印到其特定对话框。
由于某种原因,当 main 运行时没有任何反应,也许我习惯了错误的例程。
package main
import (
"bufio"
"fmt"
"log"
"os"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func main() {
// Fork 3 child processes
for i := 0; i < 3; i++ {
go runApp()
}
}
// Child process code
func runApp() {
a := app.New()
w := a.NewWindow("Hello")
hello := widget.NewLabel("Hello Fyne!")
w.SetContent(container.NewVBox(
hello,
widget.NewButton("Hi!", func() {
hello.SetText("Welcome :)")
}),
))
w.ShowAndRun()
}
您只能在一个进程中运行一个 GUI 应用程序。做你想做的事情的方法是启动 goroutine 并从单个应用程序显示多个窗口。该应用程序将在 main() 末尾通过调用
a.Run()
而不是 w.ShowAndRun()
来运行。