GUI OperationGura prepares an interface for Tcl/Tk aimed to build GUI applications. The following example creates a window that has one Button widget.
import(tk)
tk.mainwindow() {|mw|
mw.Button(text => 'Push me') {|w|
w.pack()
w.bind(`command) {
w.tk$MessageBox(title => 'event', message => 'hello')
}
}
}
tk.mainloop()
The code below is a drawing program. I have ported it from a sample in TkDocs.
import(tk)
tk.mainwindow() {|mw|
mw.Canvas(bg => 'white') {|c|
c.pack(fill => 'both', expand => true)
[lastx, lasty] = [0, 0]
color = 'black'
c.bind('<1>') {|x:number, y:number|
[lastx, lasty] = [x, y]
}
c.bind('<B1-Motion>') {|x:number, y:number|
addLine(x, y)
}
addLine(x:number, y:number) = {
extern(lastx, lasty)
c.Line(lastx, lasty, x, y, fill => color, width => 3)
[lastx, lasty] = [x, y]
}
setColor(colorNew:string) = {
color:extern = colorNew
}
function(color:string, y:number):map {
c.Rectangle(10, y, 30, y + 20, fill => color) {|item|
item.bind('<1>') { setColor(color) }
}
}(['red', 'blue', 'black'], 10 + (0..) * 25)
}
}
tk.mainloop()
Sample result. ![]() |