Ruby で GUI するスレ

■ このスレッドは過去ログ倉庫に格納されています
2010/03/26(金) 22:19:36
Qt
wx
Tk
GTK GNOME2 Shoes
Fx
Apollo
Visualuruby
IronRuby
色々選択肢はあるようですが続きは >>2 以降で
2010/03/26(金) 22:20:33
あらら
立てられてしまった

ttp://myruby.seesaa.net/tag/articles/ruby%82%CCGUI%94%E4%8Ar
2010/03/26(金) 22:25:25
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレは誰でもウェルカム
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
4デフォルトの名無しさん
垢版 |
2010/03/26(金) 22:25:46
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━-┓
┃ ┌────────────────────────ーーー┐ ┃
┃ │            / ̄ ̄\                      │ ┃
┃ │          /  ヽ_  .\                    │ ┃
┃ │          ( ●)( ●)  |     ____            │ ┃
┃ │          (__人__)      |     /      \          .| ┃
┃ │          l` ⌒´    |  / ─    ─   \       │ ┃
┃ │         . {         |/  (●)  ( ●)  \      .| ┃
┃ │           {       / |      (__人__)      |     │ ┃
┃ │      ,-、   ヽ     ノ、\    ` ⌒´     ,/__      .| ┃
┃ │     / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ、   │ ┃
┃ │    /  L_         ̄  /           _l__( { r-、 .ト、 . │ ┃
┃ │       _,,二)     /            〔― ‐} Ll  | l) ).│ ┃
┃ │       >_,フ      /               }二 コ\  Li‐' .| ┃
┃ │    __,,,i‐ノ     l              └―イ   ヽ |   . | ┃
┃ │                l                   i   ヽl   . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            平成22年3月26日 クソスレにて
2010/03/26(金) 22:44:36
    ,.-'"   `'''-、
  /          ヽ
  /             l
  | ヽ         / |
 rl  〉 __    ___ 〈 /-,
 |゙i| <.(・)` i '´(・)>  .!/il
 ヽl     ..:|     |_ノ
   l   /ヽ___ハ    l
   ヽ ヽ ー==‐ ' / /
  _/| ヾ、     /|ヽ、
 ::::::l   ` --- '  l:::::::::ヽ、__

クソスレア・ゲルナー[xoslair Gellner]
(1914〜1989 イギリス)
2010/03/26(金) 22:51:54
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
2010/03/27(土) 11:13:11
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
いきなりクソスレ
ワロタ
2010/03/27(土) 12:39:01
GUIにこだわるひとって素人だとおもう
9sage
垢版 |
2010/03/27(土) 18:40:38
まあ確かにRubyは、Rubyで作ったソフトを人に使ってもらうためにあるんじゃなく、
自分のパソコンでのみ使うオナニー言語だからGUIである必要はないんだろうな。
2010/03/27(土) 18:44:52
ひとりエッチ用の言語という意味合いではオナニー用というのもあってる。
ともすれば、Ruby on Railsは公開オナニー用途なのかもしれない。
2010/03/27(土) 19:52:12
>>9
自分で使うだけだから、自己満足の為だからってのはどうか知らんが
だからGUIが必要ないって事にはならならんだろう
2010/03/27(土) 23:38:08
GUIは
使うのも面倒
作るのも面倒
誰得って話
2010/03/28(日) 02:39:15
作る人が自己満足して俺得なんじゃないの?
2010/03/28(日) 13:39:54
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
2010/03/28(日) 13:41:49
IronRubyから.NETでGUIするのがオヌヌメ
2010/03/28(日) 13:45:05
$ ruby
require 'tk'
TkLabel.new(nil, 'text'=>'hoge').pack
Tk.mainloop
^D

お、動いた
^D 押さないと逝けなかったけど
2010/03/28(日) 13:49:07
Pythonでもやてみる
>>> import Tkinter as tk
>>> lbl = tk.Label(text='hoge')
>>> lbl.pack()
>>> tk.mainloop()
一行書くたびに画面が変化して面白い
2010/03/28(日) 13:51:56
とりあえず休憩うんこ
2010/03/28(日) 13:54:47
GUIプログラミングをやりたいだけならCygwin版は捨てろ
普通にmswin32のRubyか最悪Migw32版のRuby使え

「cygwinのRubyでGUIプログラミングをする」というそれそのものが目的なら止めない
2010/03/28(日) 13:54:50
「るびま」のTk入門をやってみる
ttp://jp.rubyist.net/magazine/?0003-RubyTkMovement
2010/03/28(日) 13:55:38
>19
アドバイスありがとうございます
「cygwinのRubyでGUIプログラミングをする」のが目的です
2010/03/28(日) 13:57:27
>>15
IronRuby はインスコが面倒なので今回は見送りです
(既に Cygwin 版が入ってるので)
また機会があったらやりたいと思います
2010/03/28(日) 13:58:56
だいたい人の話を聞かない香具師は成功しない
2010/03/28(日) 14:03:16
$ 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の意味がよくわかんないけど・・・
2010/03/28(日) 14:05:15
>>23
はい
肝に銘じておきます
2010/03/28(日) 14:07:58
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()
2010/03/28(日) 14:13:11
>>24
>なんかxの意味がよくわかんないけど・・・

そこはそれ、tkのpackの知識が必要な場面だ。
2010/03/28(日) 14:17:41
>>> 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 は : とか > とかが目障り
2010/03/28(日) 14:19:06
るびまの記事は最近の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')
してみるとよくわかると思う
2010/03/28(日) 14:21:15
>>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()
2010/03/28(日) 14:23:57
ruby で require 'tk' すると x ってのが名前空間に割り込む訳ですか
2010/03/28(日) 14:26:30
ただのシンボルですがな。
2010/03/28(日) 14:28:04
>>29
fill='x' でも fill=tk.X でもどっちでもいいみたいですね
Python はコマンド打つとリアルタイムに分かって初心者向にやさしいですね
2010/03/28(日) 14:28:49
とまあ何かGUIツールキットを使おうとすると、言語自体と
ツールキット両方を並行して学ぶことを迫られるわけで。
2010/03/28(日) 14:29:46
>>32
えっ
2010/03/28(日) 14:32:31
16時からtv東京で始まる特別番組見ないといけないので18時頃まで落ちます
いろいろ助言して下さった方ありがとうございました ノシ
2010/03/28(日) 14:40:05
>>35
シンボルだから :x
たとえばこんなのと一緒
require 'tk'
TkLabel.new(nil, :text=>:hage).pack
Tk.mainloop
2010/03/28(日) 14:47:49
>>28
それはpackの戻り値がNoneだから
Tkinterでは
b = Button(...)
b.pack()
のように二行に分けて書くのが常道
2010/03/28(日) 15:23:30
Rubyの知識ないのになんでRuby/Tkに手を出したんだ
2010/03/28(日) 15:29:14
>>39
将来どうなるかはわかんないけど、
現状は tk ライブラリの .rb スクリプト読んで動作推測できるレベルじゃないと早晩詰まるよね
もっと簡単であるべきなのはまあ確かだが、実際はそうなってないししばらくはこのままだろう
2010/03/28(日) 15:59:18
ところでRuby/Tkのマニュアルってどこにあるんだい
2010/03/28(日) 16:08:04
>>41
ソース読め
みんなそうやって使ってる
2010/03/28(日) 19:01:56
>>33
> Python はコマンド打つとリアルタイムに分かって初心者向にやさしいですね
つ irb
2010/03/28(日) 19:23:25
いや、そういうことじゃなくって
Ruby/Tkだとpackしても画面に反映されず
mainloopに入ってはじめて反映されることを言ってるんだと思う

回避策もあると思うけど漏れは知らない
誰か教えてくれるだろう
2010/03/28(日) 19:34:24
Pythonのはいわゆるwishの機能をそのまま使ってるのだろうな

> wish

(デスクトップ) 1 % label .txt1 -text いいからTcl/Tkそのまま使え
.txt1
(デスクトップ) 2 % pack .txt1
(デスクトップ) 3 %
2010/03/28(日) 21:10:14
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
2010/03/29(月) 04:22:17
Windowsだとirbで
Thread.new{Tk.mainloop}
がうまくいかないです

Ruby/Tkのサンプルコードにあるirbtkw.rbwを使うと
Ruby/Tk側でコンソールをエミュレートしてその上でirbを動かすことで
対話的にRuby/Tkを使えます
48Tcl使い
垢版 |
2010/03/29(月) 04:24:37
>>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の仕組みが穴埋めモデルであることを理解する必要がある。
2010/03/29(月) 04:42:57
fxみたいにコンパイルするだけでGUI込みの実行形式に変換できる奴とかもっと増えればいいな
2010/03/29(月) 07:24:34
Tclerキター!これで勝つる
2010/03/29(月) 07:34:03
こうしてTcl/Tkのマニュアルすら読んでないことを自ら露見させ馬脚を現したのだった
2010/03/29(月) 07:35:05
>>38
なんで pack() の戻り値を self にしなかったんだろうなとは思う
2010/03/29(月) 07:39:14
>>51
…まあ、Ruby/Tkはその構造上
「Tcl/Tkではこう書いていたものをRuby経由ではこう書きます」
という以上の導線はないよね…
Tcl/Tkをある程度修めていることが使用の大前提ではある
Ruby/Tkを使うなら、外見上はTcl/Tkで同じものを作れないと駄目
2010/03/29(月) 07:49:42
Ruby/Tkでの転記の仕方さえ覚えればTkのチュートリアルや解説が流用できるということでもある
実質、「Tcl/TkでのこれはRuby/Tkではどう書くのだろう」という調べものがメインになると思う
2010/03/29(月) 08:49:20
最初から Tcl/Tk で書けば良くね?
2010/03/29(月) 12:32:49
>>55
ちょっと上のレスにも似たようなのがあったけど、別にウィンドウアプリケーション作るのが目的じゃないから
Ruby/Tkを使うことが目的だからその指摘は的外れ
2010/03/29(月) 15:54:03
>別にウィンドウアプリケーション作るのが目的じゃないから

イミフ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況