1read 100read
2012年5月プログラム120: Ruby で GUI するスレ (378)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
[Tips]Borland C++Builder ちょいテク No.01 (422)
【激突】関数型言語 VS オブジェクト指向言語2 (997)
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】 (440)
GARMIN社のGPSのプログラム (650)
Java ネットワークプログラミング 【教えて!】 (605)
日本発、次世代言語: 織田信長 (528)
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元 削除依頼 ▲
CVS導入スレ〜 Rev.3 (836)
ポインタを難しいと言う奴が理解できない (850)
Kinect ハック (972)
D言語 Part29 (573)
C、C++の最適化について語るスレ 3 (686)
Excel VBA 質問スレ Part24 (540)
--log9.info------------------
ファンタシースターオンライン情報交換のスレ (228)
グラディウスVの最難関は一面のボス (219)
【サーバー】Pop'n対戦ぱずるだま【がら空き】 (352)
実況パワプロ13サクセス【エースで4番】検証スレ (847)
【COD5】コールオブディユーティWAW 攻略スレ1 (405)
シムピープル攻略スレ (839)
転生學園月光録 攻略スレ 其の3 (637)
リッジレーサー★最速タイム追求★RIDGE RACER (331)
ヴェルウィックサーガ攻略part1 (473)
COD4MW2(日本版)被害者の会 (167)
【PS3】DARK SOULS ダークソウル オンライン協力スレ 103 (149)
DARK SOULS (ダークソウル) 裏アイテム交換スレ part4 (564)
塵。して一時間以内にしょおーされなければエレメンツ83 (899)
【PS3】DARK SOULS ダークソウル 770 (123)
◇◆◇TES V:SKYRIM スカイリム 191◇◆◇ (747)
【PS3】白騎士物語LEVEL935 (547)
--log55.com------------------
星のカービィのデデデ大王アンチスレ2
【TOZ】アリーシャ関連アンチスレ70【ゼスティリア】
【TOZ】アリーシャ関連アンチスレ71【ゼスティリア】
【Fate/GO】マシュ・キリエライトアンチスレ19
【P5】新島真&信者アンチスレ50【ペルソナ5】
【Fate/GO】マシュ・キリエライトアンチスレ20
【ペルソナ5】明智吾郎&信者アンチスレ17
【DQ11】ドラクエ11のホメロス&ホメロス信者ァンチスレ18