|
[ruby-list:42428] toplevel ウィジェットにイベントがわたらない?: msg#00082lang.ruby.japanese
九工大、木村といいます。 ruby/tkのプログラムでどうにもわからないのがあります。 解決の糸口でも教えていただけるとたいへん助かります。 次のプログラムsample.rbを作成し、ターミナルから $ ruby sample.rb で起動します。表れたウィンドウのエントリー上でマウスをクリック、しかし、 キーボードをタイプしてもエントリーには何も表示されず、 ターミナル側にも反応がありません。ボタンは有効に機能します。 #!/usr/bin/ruby require 'tk' top=TkToplevel.new {title 'toplevel'} top.bind("Any-Key") {|e| p e} entry=TkEntry.new(top) button=TkButton.new(top) { text 'exit' command {exit(0)} } entry.pack #1 button.pack #2 Tk.mainloop 不思議なのは、entry と button のパックの順番(上の#1と#2)を入れ換える と、エントリーには入力したキーが表示され、ターミナル側にはキーイベント の情報がプリントされることです。 さらに不思議なのは、プログラムが期待どおりに動かないのはわたしの回りで は1種類のPC(HP compaq dc5000)だけで、悪いことにそのPCと同じ構成のPCが 100台、大学の一斉授業で学生が使うPCなんです。 PCは debian/sarge をインストールしており、カーネルは 2.6.8-2-686 を apt-get しました。 $ dpkg -l \*ruby\* | grep ii ii libreadline-ru 1.8.2-1 Readline interface for Ruby ii libreadline-ru 1.8.2-7sarge2 Readline interface for Ruby 1.8 ii libruby1.8 1.8.2-7sarge2 Libraries necessary to run Ruby 1.8 ii libtcltk-ruby 1.8.2-1 Tcl/Tk interface for Ruby ii libtcltk-ruby1 1.8.2-7sarge2 Tcl/Tk interface for Ruby 1.8 ii ruby 1.8.2-1 An interpreter of object-oriented scripting ii ruby-elisp 1.8.2-1 Emacs-lisp ruby-mode for Ruby ii ruby1.8 1.8.2-7sarge2 Interpreter of object-oriented scripting lan ii ruby1.8-elisp 1.8.2-7sarge2 ruby-mode for Emacsen ii ruby1.8-exampl 1.8.2-7sarge2 Examples for Ruby 1.8 $ COLUMNS=200 dpkg -l kernel-image\* | grep ii ii kernel-image-2.6.8-2-686 2.6.8-16sarge1 Linux kernel image for version 2.6.8 on PPro/Celeron/PII/PIII/P4. どんな情報、コメントでも歓迎します。 よろしくお願いします。
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42427] Re: 空白行を除くための行数の数え方, 遠藤 大二 |
|---|---|
| Next by Date: | [ruby-list:42429] Re: toplevel ウィジェットにイベントがわたらない?, Hidetoshi NAGAI |
| Previous by Thread: | [ruby-list:42426] [ANN] Exerb 4.0.0-preview1, Yuya Kato |
| Next by Thread: | [ruby-list:42429] Re: toplevel ウィジェットにイベントがわたらない?, Hidetoshi NAGAI |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |