Last updated: April 26 2012.- 2009. Kajiyama             [ 目次に戻る ]

Ruby/Tk: ボタンのWidgetを作成



・わからない事は,Ruby/Tk 逆引き辞典 -RWiki


1. ボタンWidgetの基礎


・ボタンには「ボタンWidget TkButton」・「チェックボタンWidget TkCheckButton」・「ラジオボタンWidget TkRadioButton」がある.

・「ボタンWidget」は,それを押した(on)か,押していない(off)かの情報をRubyに伝える.

・「チェックボタンWidget」は,1個のチェックボタンについて,チェックした(on)かしない(off)かの情報をRubyに伝える.

・「ラジオボタンWidget」は,数個の組み合わせのボタンの中で,どれが押された(on)かについての情報をRubyに伝える.

  1. ボタンWidgetsと押されることによる動作

    ・ソースファイルをコピーして,RDEエディタに貼り付ける.

    ・このソースファイルを作業フォルダー「Ruby_work_190」の中に「Tkb01.rb」のファイル名で保存し,実行する.

    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Tkb01.rb STDOUT.sync = true txt01 = "ボタン" txt02 = "あなたがボタンを押すたびに" txt03 = "「今日は」と表示する\n" require("tk") TkRoot.new do #ウインドウのタイトルバー表示 title( txt01 ) end TkButton.new do #ボタン表示 text( txt02 ) command do #ボタンを押したときの動作を指示 print ( txt03) end pack end Tk.mainloop
    実行結果 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する



  2. 終了ボタン

    ・ソースファイルをコピーして,RDEエディタに貼り付ける.


    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Tkb02.rb STDOUT.sync = true txt01 = "終了ボタン" txt02 = "あなたがボタンを押すたびに" txt03 = "「今日は」と表示する\n" txt04 = "終了(Quit)" require("tk") TkRoot.new do #ウインドウのタイトルバー表示 title( txt01 ) end TkButton.new do #ボタン表示 text( txt02 ) command do #ボタンを押したときの動作を指示 print ( txt03) end pack('side' => 'top', 'fill' => 'both') #配置 end TkButton.new do #終了ボタン表示 text( txt04 ) command do #ボタンを押したときの動作を指示 print ( txt04 ) proc ( exit ) end pack('side' => 'bottom', 'fill' => 'both')#配置 end Tk.mainloop
    実行結果 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する 「今日は」と表示する 終了(Quit)



2. チェックボタンWidgetの作成


  1. チェックボタンの表示

    ・ソースファイルをコピーして,RDEエディタに貼り付ける.

    ・このソースファイルを作業フォルダー「Ruby_work_190」の中に「Tkm01.rb」のファイル名で保存し,実行する.

    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Tkb03.rb STDOUT.sync = true txt01 = "チェックボタン" txt02 = "チェックボタン" txt03 = "終了(Quit)" require("tk") TkRoot.new do #ウインドウのタイトルバー表示 title( txt01 ) end check = TkVariable.new("0") TkLabel.new do #チェック内容のLabel表示1 textvariable( check ) pack end TkCheckButton.new do #チェックボタン表示 text("賛成ですか.左ボタンでチェックする.") variable( check ) command do #ボタンを押したときの動作を指示 puts ( check ) #チェック内容の表示2 end pack end TkButton.new do #終了ボタン表示 text( txt03 ) command do #ボタンを押したときの動作を指示 print ( txt03 ) proc ( exit ) end pack('side' => 'right' )#配置 end Tk.mainloop
    実行結果 1 0 1 0 1 0 1 終了(Quit)



3. ラジオボタンWidgetの作成


  1. ラジオボタンの表示

    ・ソースファイルをコピーして,RDEエディタに貼り付ける.

    ・このソースファイルを作業フォルダー「Ruby_work_190」の中に「Tkm01.rb」のファイル名で保存し,実行する.

    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Tkb04.rb STDOUT.sync = true txt01 = "ラジオボタン" txt02 = "授業の予習をしています" txt03 = "授業の予習はしません " txt04 = "授業の予習は時々します" txt05 = "終了(Quit)" require("tk") TkRoot.new do #ウインドウのタイトルバー表示 title( txt01 ) end learning = TkVariable.new("普通過ぎます") TkLabel.new do textvariable( learning ) pack end TkRadioButton.new do #ラジオボタン表示1 text( txt02 ) value( "よい子ですね" ) variable( learning ) pack end TkRadioButton.new do #ラジオボタン表示2 text( txt03 ) value("普通過ぎます") variable( learning ) pack end TkRadioButton.new do #ラジオボタン表示3 text( txt04 ) value("態度をはっきりさせなさい") variable( learning ) pack end TkButton.new do #終了ボタン表示 text( txt05 ) command do #ボタンを押したときの動作を指示 proc ( exit ) end pack('side' => 'left' )#配置 end Tk.mainloop
    実行結果


  2. 詩集にラジオボタンを組み込む

    ・ソースファイルをコピーして,RDEエディタに貼り付ける.

    ・このソースファイルを作業フォルダー「Ruby_work_190」の中に「Tkm01.rb」のファイル名で保存し,実行する.

    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Tkb05.rb STDOUT.sync = true hakushu01 = "「空に真赤な」 北原白秋 邪宗門\n \n空に\ 真赤な雲のいろ。\n玻璃に真赤な酒の色。\nなんでこの身が悲\ しかろ。\n空に真赤な雲のいろ。\n" hakushu02 = "「WHISKY」 北原白秋 邪宗門\n \n夕暮のも\ のあかき空、\nその空に百舌啼きしきる。\nWhiskyの罎の列\n\ 冷やかに拭く少女、\n見よ、あかき夕暮の空、\nその空に百舌\ 啼きしきる。\n" hakushu03 = "「わかき日の夢」 北原白秋 邪宗門\n \n水\ 透ける玻璃のうつはに、\n果のひとつみづけるごとく、\nわが\ 夢は燃えてひそみぬ。\nひややかに、きよく、かなしく。\n" txt01 = "詩集 邪宗門" txt02 = "北原白秋のどの歌を詠みますか\n" txt03 = "「空に真赤な」 " txt04 = "「WHISKY」   " txt05 = "「わかき日の夢」" txt06 = "終了(Quit)" require("tk") #フォントのタイプと大きさ指定 font01 = TkFont.new("family"=>"times", "size"=>12) font02 = TkFont.new("family"=>"helvetica", "size"=>12) #色指定 color01 = "#ff0000" #16進法で赤色指定 color02 = "#008000" #16進法で緑色指定 color03 = "#ffffff" #16進法で白色指定 TkRoot.new do #ウインドウのタイトルバー表示 title( txt01 ) end hakushu = TkVariable.new(txt02) TkLabel.new do width (30) #TkLabelの表示の大きさ 幅 height (10) #TkLabelの表示の大きさ 高さ textvariable( hakushu ) font ( font02 ) background(color03) #壁紙白色指定 pack end TkRadioButton.new do #ラジオボタン表示1 text( txt03 ) value( hakushu01 ) foreground(color01) #フォント赤色指定 variable( hakushu ) pack end TkRadioButton.new do #ラジオボタン表示2 text( txt04 ) value(hakushu02) variable( hakushu ) pack end TkRadioButton.new do #ラジオボタン表示3 text( txt05 ) value(hakushu03) variable( hakushu ) foreground(color02) #フォント緑色指定 pack end TkButton.new do #終了ボタン表示 text( txt06 ) command do #ボタンを押したときの動作を指示 proc ( exit ) end pack('side' => 'bottom' )#配置 end Tk.mainloop
    実行結果


[ 目次に戻る ]