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