1read 100read
2012年4月プログラム39: Ruby で GUI するスレ (375) TOP カテ一覧 スレ一覧 2ch元 削除依頼
サミー777townのVB 2005マクロを貼るスレpart1 (144)
Google App Engine for java (230)
IS<インフィニット・ストラトス>総合 (568)
CLDC+MIDP+携帯電話用Javaスレッド part 9 (921)
雑談スレ 4 (339)
正規表現 Part9 (774)

Ruby で GUI するスレ


1 :10/03/26 〜 最終レス :12/05/03
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元 削除依頼
雑談スレ 4 (339)
強いAI(人工知能)ver0.0.1 (741)
P2P型の完全匿名掲示板はまだ出来ないの?その2 (508)
愛国Ruby (344)
Visual Basic2005やりたいんだけどアドバイス頼む (207)
【会津】パソコン甲子園2004【若松】 (777)
--log9.info------------------
ラック、サーバケース総合スレin自宅鯖板 Part1 (189)
挑戦者「グラタン」で自宅サーバ (461)
オマイらの日記 (131)
鯖のバックアップについて語るスレ (275)
ぬぉーーん、自宅鯖で・高帯域利用はNG? (181)
CBOX (716)
そろそろ自宅サーバ板の看板きめよーや (179)
【旧FreeNAS】 OpenMediaVault Part1 【Linux】 (211)
IPV4が無くなるって! (257)
PCがあまったから鯖立ててやるよ (320)
41氏の玄箱sarge化実況 (339)
【超初心者】自宅サーバー構築日記 (263)
恥ずかしいセリフ禁止! (954)
鯖のリソース余ってるやつちょっと来い (135)
プロバイダなしで自宅鯖 (157)
OpenNap/SlavaNap総合スレッド.003 (780)
--log55.com------------------
アベノミクス不況 服が売れない
アベノミクスは格差拡大を進めただけの愚策
アベノミクス失敗に追い撃ち 日米貿易摩擦勃発
アベノミクス失敗隠し 安倍は戦争に突入
アホノミクス緩和を無期限化で日本は無税国家に
アベノミクス失敗 貿易赤字が定着3
アベノミクス失敗を早々と見抜いていた木内委員
アベノミクス失敗でアベノフレーションへ3