質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

735閲覧

【Ruby】【Tk】ボタンが押されたら 所定の関数を実行させたい

Reach

総合スコア733

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2019/08/04 06:19

お世話になっております

コードで ボタンをクリックすると

NameError: unknown option 'test3' for #<Tk::Button:0x0000000004f951b0 @path=".w00000.w00001"> (deleted widget?)
---< backtrace of Ruby side >-----
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:4984:in rescue in method_missing' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:4980:in method_missing'
(eval):1:in block (2 levels) in initialize' f:/files/tempCodeRunnerFile.ruby:20:in eval'
f:/files/tempCodeRunnerFile.ruby:20:in block (2 levels) in initialize' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1456:in eval_cmd'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1456:in cb_eval' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1403:in call'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1607:in block in callback' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1606:in catch'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1606:in callback' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1301:in mainloop'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/tk-0.2.0/lib/tk.rb:1301:in `block in module:TkCore'
---< backtrace of Tk side >-------
invoked from within
"rb_out c00001"
invoked from within
".w00000.w00001 invoke"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list $w invoke]"
(procedure "tk::ButtonUp" line 24)
invoked from within
"tk::ButtonUp .w00000.w00001"
(command bound to event)

と 出ます

Ruby

1require 'tk' 2require 'tkafter' 3 4class Display 5 def initialize 6 ph = { 'padx' => 10, 'pady' => 10 } 7 @myFont = TkFont.new("family" => 'Helvetica',"size" => 13,"weight" => 'bold') 8 9 @text1 = TkVariable.new 10 @text2 = TkVariable.new 11 @text3 = TkVariable.new 12 @text4 = TkVariable.new 13 14 @root = TkRoot.new 15 @root.geometry = "100x100+75+0" 16 @top = TkFrame.new(@root , 'background' => '#FFFFF7') 17 18 #eval("test3()") 19 TkButton.new(@top) {text 'Exit'; command proc { eval("test3()")}; pack ph} 20 @top.pack('fill'=>'both', 'side' =>'top') 21 22 show 23 24 end 25 26 def show() 27 @root.mainloop 28 end 29 30 def test() 31 print ('OK!') 32 end 33 34 def test2() 35 print ('OK!!') 36 end 37 38 def test3() 39 eval ("test()") 40 eval ("test2()") 41 exit 42 end 43 44end 45 46 47 48Display.new

TkButton.new(@top) {text 'Exit'; command proc { eval("test3()")}; pack ph}
で ボタンを押すと 関数が 実行されるようにしたいのですが
どのような修正を すれば よいのでしょうか?

TkButton.new(@top) {text 'Exit'; command proc { test3()}; pack ph}
も試しましたが やはりエラーが発生します

ご教示の程よろしくお願い致します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ruby

1this = self 2TkButton.new(@top) {text 'Exit'; command proc { this.test3 }; pack ph}

投稿2019/08/04 06:46

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reach

2019/08/04 22:55

ありがとうございました! exit を TkRoot.destroy にしたところ 他のエラーも 表示されなくなりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問