1read 100read
2013年03月プログラム351: Ruby で GUI するスレ (395) TOP カテ一覧 スレ一覧 2ch元 削除依頼
D言語は多分コケると思っている人の数→ (378)
C++は難しすぎ 難易度:4 (419)
フリーソフトなどに使われる言語は? (237)
スレ立てるまでもない質問はここで 125匹目 (820)
C++相談室 part99 (427)
こんなプログラミング言語は嫌だ! (594)

Ruby で GUI するスレ


1 :2010/03/26 〜 最終レス :2013/02/07
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 :
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究所

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で作ったソフトを人に使ってもらうためにあるんじゃなく、
自分のパソコンでのみ使うRー言語だからGUIである必要はないんだろうな。

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

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 押さないとRなかったけど

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元 削除依頼
delphiで作った有名ソフトって何があるの? (680)
Microsoft Silverlight その9 (428)
C++でXML(主にxerces)やろう! (675)
【GPGPU】くだすれCUDAスレ part6【NVIDIA】 (279)
Perlを使って2ちゃんねるにHello Worldを書き込む (214)
BrainFuck Part.3 <[+-.,]> (491)
--log9.info------------------
ノートPCでLinux 7 (304)
はやいルータを作る (798)
Debian原理主義者ペタキモス (405)
なにはともあれSLAX (694)
日本語入力総合スレッド 5 (408)
Ubuntu(゚听)イラネで1000目指すスレ Part2 (595)
【エンベデッド】組込Linux総合スレ2【リアルタイム】 (202)
☆Google デスクトップ【Linux】 (281)
Linux zaurus 10 (394)
CCさくらヲタ用Linux (335)
こんなディストリビューションは嫌だ その3 (321)
【自家製】MythTV Part.3【HDDビデオ】 (684)
コマンドのみで語り合う漢のスレ (569)
sidux - Debian Sid 安定化プロジェクト (786)
/**軽くて多機能--Xfceスレ**/ その3 (351)
Linuxで動くオープンソースエロゲを作ろう!4 (470)
--log55.com------------------
スレ立てるほどか迷うコピペネタ用のスレ 2
('
女兼信者軍団のガイドライン5
魔法少女まどか☆マギカ 各話リストのガイドライン
ポルナレフがありのまま起こった事を話すガイドライン256
オプーナのガイドライン○購入権利書63枚目
ポルナレフがありのまま起こった事を話すガイドライン259
韓銀大勝利のガイドライン3