I’m working on some code using ImageView to show an image in a Gtk window and grab the (x,y) coordinate where the user clicks within the window. I based it on the Calling imshow from a script file section of the ImageView.jl github page.
When the code is run in a clean notebook, it is sometimes slow to execute, then fails to capture the values from
gui["canvas"].mouse.buttonpress. Other times, it works fine on the first go-round in a clean notebook.
I’ve tested this on PC and Mac and its having the same issue on both, but seems more unstable on the Mac. Using Julia 1.0.1
Any thoughts on how to improve this to get more consistent behavior would be appreciated.
Here is a MWE:
using Images, GtkReactive, ImageView, Gtk.ShortNames function SelectPts(A::Array) guidict = imshow(A) # Create a condition object c = Condition() # Get the window win = guidict["gui"]["window"] gui = guidict["gui"] temp_x1 = 0 temp_y1 = 0 map(gui["canvas"].mouse.buttonpress) do btn temp_x1 = Float64(value(btn.position).x) temp_y1 = Float64(value(btn.position).y) println("Init_X: ",temp_x1," Init_Y: ",temp_y1) end # Notify the condition object when the window closes signal_connect(win, :destroy) do widget notify(c) end # Wait for the notification before proceeding ... wait(c) return temp_x1, temp_y1 end A = Gray.(rand(100,100)) x,y = SelectPts(A)