*** KNOWN BUG ***
Main event loop thread of TkAqua (> Tk8.4.9) must be the main application thread. So, ruby1.9 users must call Tk.mainloop on the main application thread.
*** ADD (2009/05/10) ***
In some cases (I don't know the description of conditions), TkAqua 8.4.7 has a same kind of hang-up trouble. So, if 8.4.7 or later, set RUN_EVENTLOOP_ON_MAIN_THREAD to true. When you want to control this mode, please call the following (set true/false as you want) before "require 'tk'". ---------------------------------------------------------- module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end ----------------------------------------------------------
*** ADD (2010/07/05) ***
The value of TclTkLib::WINDOWING_SYSTEM is defined at compiling. If it is inconsistent with linked DLL, please call the following before "require 'tk'". ---------------------------------------------------------- require 'tcltklib' module TclTkLib remove_const :WINDOWING_SYSTEM WINDOWING_SYSTEM = 'x11' # or 'aqua' end ----------------------------------------------------------
# File tk/lib/tk.rb, line 1588 def TkCore.callback(*arg) begin if TkCore::INTERP.tk_cmd_tbl.kind_of?(Hash) #TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg) normal_ret = false ret = catch(:IRB_EXIT) do # IRB hack retval = TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg) normal_ret = true retval end unless normal_ret # catch IRB_EXIT exit(ret) end ret end rescue SystemExit=>e exit(e.status) rescue Interrupt=>e fail(e) rescue Exception => e begin msg = _toUTF8(e.class.inspect) + ': ' + _toUTF8(e.message) + "\n" + "\n---< backtrace of Ruby side >-----\n" + _toUTF8(e.backtrace.join("\n")) + "\n---< backtrace of Tk side >-------" if TkCore::WITH_ENCODING msg.force_encoding('utf-8') else msg.instance_variable_set(:@encoding, 'utf-8') end rescue Exception msg = e.class.inspect + ': ' + e.message + "\n" + "\n---< backtrace of Ruby side >-----\n" + e.backtrace.join("\n") + "\n---< backtrace of Tk side >-------" end # TkCore::INTERP._set_global_var('errorInfo', msg) # fail(e) fail(e, msg) end end
# File tk/lib/tk.rb, line 1386 def inspect sprintf("#<Class(TkCallbackEntry):%0x>", self.__id__) end
# File tk/lib/tk.rb, line 1397 def call(*args) @ip.cb_eval(@cmd, *args) end
# File tk/lib/tk.rb, line 1576 def callback_break fail TkCallbackBreak, "Tk callback returns 'break' status" end
# File tk/lib/tk.rb, line 1580 def callback_continue fail TkCallbackContinue, "Tk callback returns 'continue' status" end
# File tk/lib/tk.rb, line 1584 def callback_return fail TkCallbackReturn, "Tk callback returns 'return' status" end
# File tk/lib/tk.rb, line 1400 def inspect sprintf("#<cb_entry:%0x>", self.__id__) end
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.