1read 100read
2013年17プログラム244: Ruby で GUI するスレ (402)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
【Delphi】Embarcaderoオッチャ その28【C++B*】 (893)
【JS】スクリプト,バトルロワイヤル39【Perl,Ruby,PHP,Python】 (1001)
Borland Developer Studio 2006 No.13 (290)
クラス名・変数名に迷ったら書き込むスレ。Part23 (549)
Excel VBA 質問スレ Part31 (546)
プログラムに詳しくなりたい (577)
Ruby で GUI するスレ
1 :2010/03/26 〜 最終レス :2013/07/21 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元 削除依頼 ▲
【.NET】F#について語れ2【OCAML】 (507)
Kinect ハック 2台目 (234)
日本語プログラミング言語『なでしこ』スレ5 (874)
TypeScript part1 (425)
Visual Studio 2010 Part20 (621)
アセンブラ 13 (144)
--log9.info------------------
なぜポピュラー音楽の歌詞は恋愛の事ばかりなのか (201)
★★★作詞しました!感想ください★★★ (571)
洋楽聞くのはカッコつけなのか? (472)
ガゼット かぐら アリス九 ナイトメア ヴィジュアル系総合スレ (308)
★セール軍団を暴こう★ (107)
ミュージシャンの収入 (662)
世界で通用する日本のバンドを教えてください (418)
途中で曲がかわってしまう曲 (399)
カセットテープを見直すスレ (975)
島田紳助擁護の和田アキ子がNHK紅白に文句●吉本興業 (251)
校歌の良い学校ってどこですかねえ? (148)
【明るく】聴いていて元気が出る曲【楽しく】 (141)
RPG戦闘曲で一番カッコいいのは? (501)
▽▲GIZA Studioを語る by GIZA Fan▲▽ (136)
邦楽で、曲名や歌詞にやたら英語使う歌手はクズだ。 (788)
今年のフジロックについて (785)
--log55.com------------------
【世相】東京の若者に「風呂なし物件」がじわり人気の訳 ★3
【オーストラリア沖】クルーズ船の乗客数万人、下船許されず 14隻
【速報】死刑判決の植松聖被告 弁護士が控訴 相模原障害者殺傷 19人殺害などの罪(17:18)
【速報】東京都で新たに40人の感染確認 新型コロナウイルス ★5
114歳の細胞を万能細胞化→赤ちゃんレベルまでテロメアが回復!不老不死にチェックメイト?
【速報】イオンモール、週末臨時休業 食料品は営業
【速報】植松被告、控訴
【COVID-19】「都市を封鎖するようなことは特措法では想定していないため、できない」内閣府