1read 100read
2012年6月プログラム243: Ruby で GUI するスレ (378) TOP カテ一覧 スレ一覧 2ch元 削除依頼
C++ サーブレットコンテナ(需要なし?) (372)
推薦図書/必読書のためのスレッド 68 (494)
データベースプログラミング全般スレ (376)
最高にド低脳な発言してください in ム版(XVII) (222)
【注意】STLの落とし穴【危険】 (852)
Emacs Lisp 3 (915)

Ruby で GUI するスレ


1 :10/03/26 〜 最終レス :12/05/26
Qt
wx
Tk
GTK GNOME2 Shoes
Fx
Apollo
Visualuruby
IronRuby
色々選択肢はあるようですが続きは >>2 以降で

2 :
あらら
立てられてしまった
ttp://myruby.seesaa.net/tag/articles/ruby%82%CCGUI%94%E4%8Ar

3 :
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレは誰でもウェルカム
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

4 :
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━-┓
┃ ┌────────────────────────ーーー┐ ┃
┃ │            / ̄ ̄\                      │ ┃
┃ │          /  ヽ_  .\                    │ ┃
┃ │          ( ●)( ●)  |     ____            │ ┃
┃ │          (__人__)      |     /      \          .| ┃
┃ │          l` ⌒´    |  / ─    ─   \       │ ┃
┃ │         . {         |/  (●)  ( ●)  \      .| ┃
┃ │           {       / |      (__人__)      |     │ ┃
┃ │      ,-、   ヽ     ノ、\    ` ⌒´     ,/__      .| ┃
┃ │     / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ、   │ ┃
┃ │    /  L_         ̄  /           _l__( { r-、 .ト、 . │ ┃
┃ │       _,,二)     /            〔― ‐} Ll  | l) ).│ ┃
┃ │       >_,フ      /               }二 コ\  Li‐' .| ┃
┃ │    __,,,i‐ノ     l              └―イ   ヽ |   . | ┃
┃ │                l                   i   ヽl   . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            平成22年3月26日 クソスレにて

5 :
    ,.-'"   `'''-、
  /          ヽ
  /             l
  | ヽ         / |
 rl  〉 __    ___ 〈 /-,
 |゙i| <.(・)` i '´(・)>  .!/il
 ヽl     ..:|     |_ノ
   l   /ヽ___ハ    l
   ヽ ヽ ー==‐ ' / /
  _/| ヾ、     /|ヽ、
 ::::::l   ` --- '  l:::::::::ヽ、__
クソスレア・ゲルナー[xoslair Gellner]
(1914〜1989 イギリス)

6 :
このスレッドは天才pンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究所

7 :
213 デフォルトの名無しさん [sage] 2010/03/27(土) 08:53:31 ID: Be:
Apollo ってなに?
214 デフォルトの名無しさん [sage] 2010/03/27(土) 08:55:02 ID: Be:
過去の過ち
215 デフォルトの名無しさん [sage] 2010/03/27(土) 09:07:11 ID: Be:
黒歴史になってんの?
216 デフォルトの名無しさん [sage] 2010/03/27(土) 09:13:04 ID: Be:
ビッグ・ボンバーズみたいなもんだ
5年遅かったスペシャルマンと5年早かったカナディアンマンのコンビ
217 デフォルトの名無しさん [sage] 2010/03/27(土) 09:24:16 ID: Be:
あれはRubyもいいけどDelphiもね!というキャンペーンの一環だった気がする
Delphiは言語自体はよかったんだけどねえ
過去形で話さなければならないのがつらい所
黒歴史ではない
ただの過去の遺物
Delphiのコンポーネントの知識があるなら選択肢になるかと思う
218 デフォルトの名無しさん [sage] 2010/03/27(土) 11:11:47 ID: Be:
>>208
いきなりクソスレ
ワロタ

8 :
GUIにこだわるひとって素人だとおもう

9 :
まあ確かにRubyは、Rubyで作ったソフトを人に使ってもらうためにあるんじゃなく、
自分のパソコンでのみ使うー言語だからGUIである必要はないんだろうな。

10 :
ひとり用の言語という意味合いではー用というのもあってる。
ともすれば、Ruby on Railsは公開ー用途なのかもしれない。

11 :
>>9
自分で使うだけだから、自己満足の為だからってのはどうか知らんが
だからGUIが必要ないって事にはならならんだろう

12 :
GUIは
使うのも面倒
作るのも面倒
誰得って話

13 :
作る人が自己満足して俺得なんじゃないの?

14 :
Ruby はちょっとだけ使ったことがあります
Windows Vista 32bit で Cygwin 版 Ruby のみインストールしています
諸般の事情で
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
$ cygcheck -V
cygcheck version 1.90.4.1
System Checker for Cygwin
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Red Hat, Inc.
Compiled on Jun 12 2008
な環境です
とりあえず Ruby/Tk の勉強を始めてみます
さて何からはじめたらよいのだろうかw

15 :
IronRubyから.NETでGUIするのがオヌヌメ

16 :
$ ruby
require 'tk'
TkLabel.new(nil, 'text'=>'hoge').pack
Tk.mainloop
^D
お、動いた
^D 押さないとなかったけど

17 :
Pythonでもやてみる
>>> import Tkinter as tk
>>> lbl = tk.Label(text='hoge')
>>> lbl.pack()
>>> tk.mainloop()
一行書くたびに画面が変化して面白い

18 :
とりあえず休憩

19 :
GUIプログラミングをやりたいだけならCygwin版は捨てろ
普通にmswin32のRubyか最悪Migw32版のRuby使え
「cygwinのRubyでGUIプログラミングをする」というそれそのものが目的なら止めない

20 :
「るびま」のTk入門をやってみる
ttp://jp.rubyist.net/magazine/?0003-RubyTkMovement

21 :
>19
アドバイスありがとうございます
「cygwinのRubyでGUIプログラミングをする」のが目的です

22 :
>>15
IronRuby はインスコが面倒なので今回は見送りです
(既に Cygwin 版が入ってるので)
また機会があったらやりたいと思います

23 :
だいたい人の話を聞かない香具師は成功しない

24 :
$ ruby
require 'tk'
f = TkFrame.new(:relief=>:ridge, :borderwidth=>5).pack(:padx=>5, :pady=>5)
TkButton.new(:parent=>f, :text=>'hoge').pack(:padx=>3, :pady=>3, :fill=>:x)
Tk.mainloop
なんかxの意味がよくわかんないけど・・・

25 :
>>23
はい
肝に銘じておきます

26 :
Pythonはこれでいいのかな?
>> import Tkinter as tk
>>> f = tk.Frame(relief='ridge', borderwidth=5)
>>> f.pack(padx=5, pady=5)
>>> b = tk.Button(f, text='hoge')
>>> b.pack(padx=3, pady=3, fill='x')
>>> tk.mainloop()

27 :
>>24
>なんかxの意味がよくわかんないけど・・・
そこはそれ、tkのpackの知識が必要な場面だ。

28 :
>>> import Tkinter as tk
>>> f = tk.Frame(relief='ridge', borderwidth=5).pack(padx=5, pady=5)
>>> b = tk.Button(f, text='hoge').pack(padx=3, pady=3, fill='x')
>>> tk.mainloop()
これだと結果が違うんだよねぇ
きっと f が None になってて b の parent が None になっちゃってるんだろな
Python だとメソッドチェーン出来ないのがもどかしい
Ruby は : とか > とかが目障り

29 :
るびまの記事は最近のRubyのTcl/Tk対応具合はこんなですよって示す記事
Ruby/Tkの入門記事にはなってないよ
ということで超労作のTkDocsチュートリアル
http://www.tkdocs.com/tutorial/firstexample.html
>>24
親ウィジェットに埋め込もうとしてるウィジェットを
どの方向に伸ばすかって指定
Tkinterなら
b1 = tk.Button(f. text='hoge'*10)
b1.pack()
b2 = tk.Button(f, text='fuga')
b2.pack()
これで一度ウィジェットの表示状況を見たら
b2.pack(fill='x')
してみるとよくわかると思う

30 :
>>27
あぁそうですね
Pythonだと正しくはこう書かなきゃですね
>>> import Tkinter as tk
>>> f = tk.Frame(relief=tk.RIDGE, borderwidth=5)
>>> f.pack(padx=5, pady=5)
>>> b = tk.Button(f, text='hoge')
>>> b.pack(padx=3, pady=3, fill=tk.X)
>>> tk.mainloop()

31 :
ruby で require 'tk' すると x ってのが名前空間に割り込む訳ですか

32 :
ただのシンボルですがな。

33 :
>>29
fill='x' でも fill=tk.X でもどっちでもいいみたいですね
Python はコマンド打つとリアルタイムに分かって初心者向にやさしいですね

34 :
とまあ何かGUIツールキットを使おうとすると、言語自体と
ツールキット両方を並行して学ぶことを迫られるわけで。

35 :
>>32
えっ

36 :
16時からtv東京で始まる特別番組見ないといけないので18時頃まで落ちます
いろいろ助言して下さった方ありがとうございました ノシ

37 :
>>35
シンボルだから :x
たとえばこんなのと一緒
require 'tk'
TkLabel.new(nil, :text=>:hage).pack
Tk.mainloop

38 :
>>28
それはpackの戻り値がNoneだから
Tkinterでは
b = Button(...)
b.pack()
のように二行に分けて書くのが常道

39 :
Rubyの知識ないのになんでRuby/Tkに手を出したんだ

40 :
>>39
将来どうなるかはわかんないけど、
現状は tk ライブラリの .rb スクリプト読んで動作推測できるレベルじゃないと早晩詰まるよね
もっと簡単であるべきなのはまあ確かだが、実際はそうなってないししばらくはこのままだろう

41 :
ところでRuby/Tkのマニュアルってどこにあるんだい

42 :
>>41
ソース読め
みんなそうやって使ってる

43 :
>>33
> Python はコマンド打つとリアルタイムに分かって初心者向にやさしいですね
つ irb

44 :
いや、そういうことじゃなくって
Ruby/Tkだとpackしても画面に反映されず
mainloopに入ってはじめて反映されることを言ってるんだと思う
回避策もあると思うけど漏れは知らない
誰か教えてくれるだろう

45 :
Pythonのはいわゆるwishの機能をそのまま使ってるのだろうな
> wish
(デスクトップ) 1 % label .txt1 -text いいからTcl/Tkそのまま使え
.txt1
(デスクトップ) 2 % pack .txt1
(デスクトップ) 3 %

46 :
PythonのTkinterもwishを起動してIPCしてるとかそういうことはないよ
回避策だけどThread.new{Tk.mainloop}すればいいとのこと
学習用ならこれで十分かも
> irb
require 'tk'
Thread.new{Tk.mainloop()}
f = TkFrame.new().pack()
b1 = TkButton.new(:parent=>f, :text=>'OK').pack() # この時点で反映
b2 = TkButton.new(:parent=>f, :text=>'EXIT').pack()
exit # irbもウィジェットも終了
そしてネタ元の永井先生のサイト
http://www.dumbo.ai.kyutech.ac.jp/nagai/RubyTk/?
Ruby%A4%CE%A5%BD%A1%BC%A5%B9%A4%CB%C5%BA
%C9%D5%A4%CE%A5%B5%A5%F3%A5%D7%A5%EB

47 :
Windowsだとirbで
Thread.new{Tk.mainloop}
がうまくいかないです
Ruby/Tkのサンプルコードにあるirbtkw.rbwを使うと
Ruby/Tk側でコンソールをエミュレートしてその上でirbを動かすことで
対話的にRuby/Tkを使えます

48 :
>>24
rubyのtkがTcl/Tkのtkと仮定して。
RubyもPythonも使ったことはないが、Tcl/Tkでいうところの
"-fill"は>>29で説明しているように
親ウィジェットに埋め込もうとしてるウィジェットを
どの方向に伸ばすかという指定になる。
>>29でのサンプルのように、テキストの長さが違う
ボタンウィジェットを2つパックしてみると-fill指定ありと
なしの違いがよくわかる。
言い方を変えるとfillオプションの"x"は
frameウィジェットとframeウィジェットに詰め込まれている
buttonウィジェットとの左右の余白部分をbuttonウィジェット
を水平方向に引き伸ばして埋めるという意味になる。
Tcl/Tkの-fillオプションの値
x:水平方向に伸ばす。  y:垂直方向に伸ばす。
both:上下左右に伸ばす。 none:無効
packのデフォルトはフレームの上辺(top)から順番に詰める
ので余白ができるのは左右だけになる。
よって"y"を指定しても変化しない。
Rubyで -expand yes 相当の指定ができる場合はx,y,both,none
の違いをWindowをマウスで広げることにより確認できると思われる。
Tcl/Tkのpackの仕組みが穴埋めモデルであることを理解する必要がある。

49 :
fxみたいにコンパイルするだけでGUI込みの実行形式に変換できる奴とかもっと増えればいいな

50 :
Tclerキター!これで勝つる

51 :
こうしてTcl/Tkのマニュアルすら読んでないことを自ら露見させ馬脚を現したのだった

52 :
>>38
なんで pack() の戻り値を self にしなかったんだろうなとは思う

53 :
>>51
…まあ、Ruby/Tkはその構造上
「Tcl/Tkではこう書いていたものをRuby経由ではこう書きます」
という以上の導線はないよね…
Tcl/Tkをある程度修めていることが使用の大前提ではある
Ruby/Tkを使うなら、外見上はTcl/Tkで同じものを作れないと駄目

54 :
Ruby/Tkでの転記の仕方さえ覚えればTkのチュートリアルや解説が流用できるということでもある
実質、「Tcl/TkでのこれはRuby/Tkではどう書くのだろう」という調べものがメインになると思う

55 :
最初から Tcl/Tk で書けば良くね?

56 :
>>55
ちょっと上のレスにも似たようなのがあったけど、別にウィンドウアプリケーション作るのが目的じゃないから
Ruby/Tkを使うことが目的だからその指摘は的外れ

57 :
>別にウィンドウアプリケーション作るのが目的じゃないから
イミフ

58 :
勉強最下位
$ ruby
require 'tk'
TkTable.new(:ros=>5, :cols=>5).pack
Tk.mainloop
-:2: uninitialized constant TkTable (NameError)
>>> import Tkinter as tk
>>> t = tk.Table(rows=5, cols=5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Table'
>>> import tktable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named tktable
orz

59 :
tktable は tk と別にパッケージをインストールする必要がある

60 :
TkTable.2.10.tar.gz をダウンロードしたんだけど
cygwin でも msvc でも make しようとすると
tktable.tcl.h が見つからないっていわれる
ぐぐっても英語のページしか出て来ないし
いまいちピントのずれたサイトばかり
だれも使ってないのだろうか

61 :
馬鹿には使えないことが証明されました

62 :
wxRuby とか RubyQt とかならこんなに苦労しなくても済むのかなぁ

63 :
>>58
rubyとだけタイプしてコード書くよりirbを推奨。
readlineが使えるなら irb -rreadline おすすめ。
# mainloopするまでフィードバックはないことについては
# 上のほうになんか解決策があった気がする。
pythonの対話モードと似たようなものだ。
# ipythonってのもあるんだな…

64 :
>>58
求めてるのがこれかはわからないし
>>59のtktableとは別物かもしれないけれど
# ActiveTcl 8.5 + ActiveScriptRuby 1.8.7
require 'tk'
require 'tkextlib/tktable'
t = Tk::TkTable.new(:rows=>5, :cols=>5)
t.pack()
Tk.mainloop()

65 :
Ruby-Gnome2マンセー

66 :
>>63
ありがとうございます
>>64
$ ruby
require 'tk'
require 'tkextlib/tktable'
t = Tk::Tktable.new(:rows=>5, :cols=>5)
t.pack()
Tk.mainloop()
/usr/lib/ruby/1.8/tk/package.rb:86:in `require': TkPackage can't find package Tk
table (RuntimeError)
from /usr/lib/ruby/1.8/tkextlib/tktable/tktable.rb:16
from /usr/lib/ruby/1.8/tkextlib/tktable.rb:14:in `require'
from /usr/lib/ruby/1.8/tkextlib/tktable.rb:14
from -:2:in `require'
from -:2
やっぱりだめですね
TkPackageが入ってないってことですかね

67 :
コピペもできない子は先生もう知りません

68 :
すみません
t = Tk::TkTable.new(:rows=>5, :cols=>5)
でもだめです

69 :
>>66
TkPackageが入ってないんじゃなくて
TkPackageからTkTableをロードしにいくところで
TkTableが無いと言われているだけ
結局TkTableをインストールしないといけない

70 :
もはやRuby側の問題じゃない罠

71 :
みなさん色々アドバイスありがとうございます
なんかもう気力が無くなりつつあります
こんなに面倒だからみんな語りたがらないんですね

72 :
irb使えとあれほど(ry

73 :
てか、何でTk使うんだ?

74 :
Ruby初心者スレでRubyXXの中ではRuby/Tkが一番相性が良い
とかなんとか言ってる方がいらっしゃったので・・・

75 :
Tkを窓から捨てろ
いますぐニダ

76 :
あきらめて Ruby/Qt にしようと思ったら
ttp://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=Ruby%2FQte
落ちてる orz

77 :
ttp://sfns.u-shizuoka-ken.ac.jp/geneng/horie_hp/ruby/horie_prog_jp.html
こっちもだめだ
orz

78 :
wxRuby は rake と SWIG が必要?
またトラブりそうだなぁ

79 :
Rubyを窓から捨てろ
いますぐニダ

80 :
馬鹿には使えないことが証明されました

81 :
しかしなんでまた一足飛びにTkTableを使おうなどと思ったのか

82 :
100マス計算の出題・採点ソフトを作りたかったのです

83 :
gridでよくね?

84 :
ウインドウを左右二つに区切って
左に100ます、右に入力欄
右の入力欄の入力に応じて左の100ますを書き換える
これならTkでも十分できるんじゃないか

85 :
すみません
縦が(x+a)で横が(x+b)の掛け算の場合
xの2乗+ax+bx+ab
を入力したら正解にしたいのですが
どういう判定をすればよいのか分かりません

86 :
x**2+(a+b)x+ab
が正解のような

87 :
GUI関係ねーし

88 :
「xの2条」とかをxの右上に2があるように表示するのは
GUIじゃないと出来ないですよね?

89 :
>>88
回答としては、canvasに小さめのフォントで描く、なんだろうけど、
とりあえずあなたの目的にとっては本質的じゃないからあとまわしに
して x^2 のような仮表示にして先に進んだほうがいいと思う。

90 :
tkってnanの略?
だろjk

91 :
>>78
初心者スレの荒らしじゃないけど、悪いことイ・ワンからGUIしたいだけならC#にしとけw
俺もGUIも全部Rubyでやりたいなどと日頃から思うけどさすがに・・・

92 :
Ruby で GUI って結局どこの馬の骨か分からんフレームワークを
必死で寄せ集めて試行錯誤してやっと使えるようになるかなってレベル
それに出来上がったのを exe にしようとするとまた苦労が待っている
Python に比べると激しく茨の道としか思えない

93 :
>>92
ここで聞くのもアレなんだけど、
PythonのGUIツールキットはTortoiseHgやらDropboxなどの製品でも使われてみたいだけど
どういう違いがあるんだろ。
exe化しにくい他に。
Pythonの環境は参考になるんじゃないかな。
そもそもGUI望まれてなくて、今時webアプリでいーじゃんという意見は半分は同意したいがw

94 :
たとえばTcl/Tk自体は歴史のあるGUIツールキットだ(X上では安定)
それをきちんとした統合度で呼んでるきちんとした言語があればそれが使われる
Pyhotn部分がしっかりしていたから使われただけ
それがRubyじゃなかったのは、RubyがPythonじゃなかったから

95 :
まあ、Python on RailsじゃなくてRuby on Railsだったかは、
PythonがRubyじゃなかったから、ということか
どっちも・・・

96 :
webあぷりじゃできなことってまだいっぱいあるからな

97 :
WEBだけの言語といわれるPHPでさえこういうのあるよ
ttp://hirata-create.lar.jp/?page=HC-Standalone-B
で、これでEXE化したソフトなんかもJRA-VANに登録してある
ttp://jra-van.jp/dlb/sft/lib/oddscorejv.html
でもこういうのできるのは、技術的問題以前にライセンス形式にあるな。
一般の人に配布する場合、EXE内または外に母体となる何らかのバイナリが必要だろ
そういう意味では、PHPやPyhotn(BSD系)は有利でもPerlとRuby(GPL系)は不利。
だからRubyでGUI考えるぐらいならC#かVBで作った方が手っ取り早いぞ。

98 :
なぜ突然EXE化の話になってるんだぜ

99 :
GUIであるからにはEXEになってねーと意味ねーよ

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
プログラミングのシンプルイズベスト (792)
人工知能は感情を獲得する事ができると思いますか? (488)
言語タンはエロかわいい! (882)
【初心者お断り】ガチ規格準拠C専用スレ Part134 (206)
愛国Ruby (350)
Visual Studio IDE環境 (547)
--log9.info------------------
☆★宮城県の水泳★☆part4 (801)
あの人は今?@水泳板 (730)
中央大学水泳部丸裸 (678)
【何様】北島【のつもりだ】 (581)
【ラオウ】栃木県水泳【大暴れ】 (270)
セントラルってどうなのよ? (647)
【SAITAMA】水泳総合スレッド【SAITAMA】 (789)
大阪のスイマーについて語るスレ (653)
【肺活量up】お前ら何秒潜れるよ?【潜水】 (628)
★☆イトマン招待☆★ (334)
インターハイ・全中スレッド (391)
【少数派】アシックス-asics総合スレ【新参者】 (676)
【競泳】パンパシフィック選手権 (211)
【東部】東京の選手集まれ【ブロック】 (718)
競泳水着の寿命 (628)
★岩手の水泳事情★【第2コース】 (574)
--log55.com------------------
【引越】ブラックな引越し屋さん【引っ越し】
タクシーでクレジットカード払いすると、手数料の8%はドライバー負担になる
【東京】イースタンタクシードライバーレス【武三】
【大型OK】入浴施設(銭湯、日帰り温泉など)【トレーラーOK】
なぜフォークマンはバカしかいないのか
大手のタクシー以外乗りたくないんだけど
<最低の男!!>小山広樹(41歳)<超最低!!>
防犯パトロールが特定人物を尾行監視している問題 in 運輸、交通