TclOO Help

Hi, I just started to learn tcl and TclOO, so i need some help with my class. I want to run method Print for my object, when i press button, how can i do it?

Here is example

package require Tk
oo::class create test {
        constructor {} {
                my gui
        }

        method gui {} {
                pack [frame .main -bg green] -fill both -padx 2 -pady 2 -expand yes -side left -anchor ne
                pack [button .b -text "test" -relief flat -command [??????????]] -side left -padx 2 -pady 2
        }
        method Print {} {
                puts "ola"
        }
}

set c [test new]

I can do it like this, but in this case method print is public:

package require Tk
oo::class create test {
        constructor {} {
                my gui
        }

        method gui {} {
                pack [frame .main -bg green] -fill both -padx 2 -pady 2 -expand yes -side left -anchor ne
                pack [button .b -text "test" -relief flat -command "[self] print"] -side left -padx 2 -pady 2
        }
        method print {} {
                puts "ola"
        }
}

set c [test new]

Thank you


Try something like:

[namespace code { my Print }]

DKF: The my command is always in the object's current namespace (strictly, there's one per object) so you can use:

[list [namespace current]::my Print]

Alternatively, you can either use the namespace code call above. Or build a command with namespace eval:

[list namespace eval [namespace current] [list my Print]]

You can use “info object namespace [self]” instead of “namespace current”, but that's a bit long-winded. (The name of an object's namespace is not documented, but it is an almost entirely ordinary namespace but with an object hanging off it and with a lot of tuning applied.)