とみふらの明るく楽しい日記

日記や俺用メモなどなんでもあり。

twitterにポストするウィンドウ作った

GUIの練習についったーにポストできるウィンドウを作りました。
Ruby/Tkは簡単にGUIが作れて素晴らしいんですが、ドキュメントが不足してますね。公式のドキュメントでもメソッド並べてあるだけでほとんど説明がない。他の言語のTkのライブラリのドキュメントみて察すればいいんでしょうか。
Ruby/Tk使えるようにするには、Ubuntuとかなら
$ sudo apt-get install libtcltk-ruby

#!/usr/bin/env ruby

#
# 自動で文字数カウントするテキストエリア
# Enterで文字列をtwitterにポストし、テキストエリアをクリア
#

require 'net/http'
require 'tk'

$username = '' #ユーザ名を入れる
$password = '' #パスワードを入れる
remain = 140

def twitterpost(str)
  request = Net::HTTP::Post.new('/statuses/update.xml')
  request.basic_auth($username,$password)
  http = Net::HTTP.start('twitter.com')
  http.request(request, 'status='+URI.escape(str))
end

label = TkLabel.new{
  text remain
  pack
}

TkText.new{
  font TkFont.new(['times', 10, ['normal']])
  self.value = "\n" #なぜかテキストクリアしても頭に改行残ってしまうので最初からつけとく
  #font一覧表示
  #puts TkFont.families

  bind 'Return', proc{
    p self.value.strip
    twitterpost(self.value.strip)
    clear
  }

  # 'Key'や'KeyPress'だとなぜか日本語入力できないので'KeyRelease'
  bind 'KeyRelease', proc{
    remain = 141-self.value.split(//u).size
    #puts remain
    label.text remain
  }

  pack
}

#Tk.root.bind 'Return', proc { puts 'Return'}

Tk.mainloop


実行例

上の数字はあと何文字入力できるかを示しています。
文字数が140文字より多いとtwitterにポストしても反映されないみたいですね。