Thread from comp.lang.tcl (3 replies)
How to do callbacks to methods
In the app below none of the callbacks works, neither in the bind calls nor the -command. I am using Tcl/Tk 9.0b2 on Linux. How can I make these callbacks work? #!/usr/bin/env wish9 tk appname "Test App" oo::class create App { constructor {} { wm withdraw . wm title . [tk appname] grid [ttk::button .quitButton -text Quit -underline 0 \ -command {my on_quit}] bind <Escape> {my on_quit} bind <Alt-q> {my on_quit} } method on_quit {} { destroy . } method show {} { wm deiconify . raise . } } set application [App new] $application showClick on article to view all threads in comp.lang.tcl
Re: How to do callbacks to methods
Sorry for the noise, I found the solution on the wiki: #!/usr/bin/env wish9 proc ::oo::Helpers::callback {method args} { list [uplevel 1 {namespace which my}] $method {*}$args } tk appname "Test App" oo::class create App { constructor {} { wm withdraw . wm title . [tk appname] grid [ttk::button .quitButton -text Quit -underline 0 \ -command [callback on_quit]] bind . <Escape> [callback on_quit] bind . <Alt-q> [callback on_quit] } method on_quit {} { destroy . } method show {} { wm deiconify . raise . } } set application [App new] $application showClick on article to view all threads in comp.lang.tcl
Re: How to do callbacks to methods
Am 11.07.24 um 09:44 schrieb Mark Summerfield: > In the app below none of the callbacks works, neither in the bind calls > nor the -command. I am using Tcl/Tk 9.0b2 on Linux. How can I make these > callbacks work? > > #!/usr/bin/env wish9 > tk appname "Test App" > oo::class create App { > constructor {} { > wm withdraw . > wm title . [tk appname] > grid [ttk::button .quitButton -text Quit -underline 0 \ > -command {my on_quit}] > bind <Escape> {my on_quit} > bind <Alt-q> {my on_quit} > } > method on_quit {} { > destroy . > } > method show {} { > wm deiconify . > raise . > } > } > set application [App new] > $application show Hello, solution: callback https://www.tcl.tk/man/tcl9.0/TclCmd/callback.html package require Tk # helpers proc for 8.6 #proc ::oo::Helpers::callback {method args} { # list [uplevel 1 {namespace which my}] $method {*}$args #} #https://www.tcl.tk/man/tcl9.0/TclCmd/callback.html tk appname "Test App" oo::class create App { constructor {} { wm withdraw . wm title . [tk appname] grid [ttk::button .quitButton -text Quit -underline 0 \ -command [callback on_quit]] bind <Escape> [callback on_quit] bind <Alt-q> [callback on_quit] } method on_quit {} { destroy . } method show {} { wm deiconify . raise . } } set application [App new] $application showClick on article to view all threads in comp.lang.tcl
Re: How to do callbacks to methods
Thank you!Click on article to view all threads in comp.lang.tcl