Hi Guys,
I’m building a GUI for my robot. I’m using Windows, so found lxn/walk. Working from the examples, I built a GUI which did all that I want right now. I developed it in the main() function, just like the examples; but for the actual robot, I want it to run in its own goroutine with the code in a separate package. Well, I can’t make that work. I can’t even get it to work as a goroutine in main().
The minimal example code below demonstrates the problem. The main() function has two ways to start the GUI. If I run the “Gui()” version. The GUI appears on the screen as expected and the controls function. However, the subsequent 5 second Sleep and Println() don’t begin to run until I close the GUI window by clicking the X. If I run the “go Gui()” version, The GUI does not appear on the screen, but the code does continue and prints after the 5 second sleep.
I expect that it is possible to do what I want (i.e. "go Gui” with continuation to the sleep and Println). I am pretty much a newbie, but I have written a number of relatively complex goroutines that don’t have this problem.
I’m running on Windows 10 (x64) with go 1.6.2 on LiteIDE X29 and a very recent walk download.
I’m hoping someone can point out my possible naïve error, or maybe a link to some code that does what I want.
Thanks,
Alex
package main
import (
"fmt"
"time"
. "github.com/lxn/walk/declarative"
)
func main() {
//Gui() // draws operative GUI window, but blocks from continuing to Sleep and Println
go Gui() // doesn't draw GUI window. Continues and does Println after 5 seconds
time.Sleep(time.Millisecond * 5000)
fmt.Println("testing")
}
func Gui() {
MainWindow{
Title: "SCREAMO",
MinSize: Size{600, 400},
}.Run()
}