X



Ruby で GUI するスレ
■ このスレッドは過去ログ倉庫に格納されています
0003デフォルトの名無しさん
垢版 |
2010/03/26(金) 22:25:25
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレは誰でもウェルカム
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
0004デフォルトの名無しさん
垢版 |
2010/03/26(金) 22:25:46
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━-┓
┃ ┌────────────────────────ーーー┐ ┃
┃ │            / ̄ ̄\                      │ ┃
┃ │          /  ヽ_  .\                    │ ┃
┃ │          ( ●)( ●)  |     ____            │ ┃
┃ │          (__人__)      |     /      \          .| ┃
┃ │          l` ⌒´    |  / ─    ─   \       │ ┃
┃ │         . {         |/  (●)  ( ●)  \      .| ┃
┃ │           {       / |      (__人__)      |     │ ┃
┃ │      ,-、   ヽ     ノ、\    ` ⌒´     ,/__      .| ┃
┃ │     / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ、   │ ┃
┃ │    /  L_         ̄  /           _l__( { r-、 .ト、 . │ ┃
┃ │       _,,二)     /            〔― ‐} Ll  | l) ).│ ┃
┃ │       >_,フ      /               }二 コ\  Li‐' .| ┃
┃ │    __,,,i‐ノ     l              └―イ   ヽ |   . | ┃
┃ │                l                   i   ヽl   . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            平成22年3月26日 クソスレにて
0005デフォルトの名無しさん
垢版 |
2010/03/26(金) 22:44:36
    ,.-'"   `'''-、
  /          ヽ
  /             l
  | ヽ         / |
 rl  〉 __    ___ 〈 /-,
 |゙i| <.(・)` i '´(・)>  .!/il
 ヽl     ..:|     |_ノ
   l   /ヽ___ハ    l
   ヽ ヽ ー==‐ ' / /
  _/| ヾ、     /|ヽ、
 ::::::l   ` --- '  l:::::::::ヽ、__

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

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

                  京都大学霊長類研究所
0007デフォルトの名無しさん
垢版 |
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
いきなりクソスレ
ワロタ
0009sage
垢版 |
2010/03/27(土) 18:40:38
まあ確かにRubyは、Rubyで作ったソフトを人に使ってもらうためにあるんじゃなく、
自分のパソコンでのみ使うオナニー言語だからGUIである必要はないんだろうな。
0010デフォルトの名無しさん
垢版 |
2010/03/27(土) 18:44:52
ひとりエッチ用の言語という意味合いではオナニー用というのもあってる。
ともすれば、Ruby on Railsは公開オナニー用途なのかもしれない。
0011デフォルトの名無しさん
垢版 |
2010/03/27(土) 19:52:12
>>9
自分で使うだけだから、自己満足の為だからってのはどうか知らんが
だからGUIが必要ないって事にはならならんだろう
0014デフォルトの名無しさん
垢版 |
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
0016デフォルトの名無しさん
垢版 |
2010/03/28(日) 13:45:05
$ ruby
require 'tk'
TkLabel.new(nil, 'text'=>'hoge').pack
Tk.mainloop
^D

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

「cygwinのRubyでGUIプログラミングをする」というそれそのものが目的なら止めない
0021デフォルトの名無しさん
垢版 |
2010/03/28(日) 13:55:38
>19
アドバイスありがとうございます
「cygwinのRubyでGUIプログラミングをする」のが目的です
0022デフォルトの名無しさん
垢版 |
2010/03/28(日) 13:57:27
>>15
IronRuby はインスコが面倒なので今回は見送りです
(既に Cygwin 版が入ってるので)
また機会があったらやりたいと思います
0024デフォルトの名無しさん
垢版 |
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の意味がよくわかんないけど・・・
0026デフォルトの名無しさん
垢版 |
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()
0028デフォルトの名無しさん
垢版 |
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 は : とか > とかが目障り
0029デフォルトの名無しさん
垢版 |
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')
してみるとよくわかると思う
0030デフォルトの名無しさん
垢版 |
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()
0033デフォルトの名無しさん
垢版 |
2010/03/28(日) 14:28:04
>>29
fill='x' でも fill=tk.X でもどっちでもいいみたいですね
Python はコマンド打つとリアルタイムに分かって初心者向にやさしいですね
0034デフォルトの名無しさん
垢版 |
2010/03/28(日) 14:28:49
とまあ何かGUIツールキットを使おうとすると、言語自体と
ツールキット両方を並行して学ぶことを迫られるわけで。
0036デフォルトの名無しさん
垢版 |
2010/03/28(日) 14:32:31
16時からtv東京で始まる特別番組見ないといけないので18時頃まで落ちます
いろいろ助言して下さった方ありがとうございました ノシ
0040デフォルトの名無しさん
垢版 |
2010/03/28(日) 15:29:14
>>39
将来どうなるかはわかんないけど、
現状は tk ライブラリの .rb スクリプト読んで動作推測できるレベルじゃないと早晩詰まるよね
もっと簡単であるべきなのはまあ確かだが、実際はそうなってないししばらくはこのままだろう
0044デフォルトの名無しさん
垢版 |
2010/03/28(日) 19:23:25
いや、そういうことじゃなくって
Ruby/Tkだとpackしても画面に反映されず
mainloopに入ってはじめて反映されることを言ってるんだと思う

回避策もあると思うけど漏れは知らない
誰か教えてくれるだろう
0045デフォルトの名無しさん
垢版 |
2010/03/28(日) 19:34:24
Pythonのはいわゆるwishの機能をそのまま使ってるのだろうな

> wish

(デスクトップ) 1 % label .txt1 -text いいからTcl/Tkそのまま使え
.txt1
(デスクトップ) 2 % pack .txt1
(デスクトップ) 3 %
0046デフォルトの名無しさん
垢版 |
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
0047デフォルトの名無しさん
垢版 |
2010/03/29(月) 04:22:17
Windowsだとirbで
Thread.new{Tk.mainloop}
がうまくいかないです

Ruby/Tkのサンプルコードにあるirbtkw.rbwを使うと
Ruby/Tk側でコンソールをエミュレートしてその上でirbを動かすことで
対話的にRuby/Tkを使えます
0048Tcl使い
垢版 |
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の仕組みが穴埋めモデルであることを理解する必要がある。
0049デフォルトの名無しさん
垢版 |
2010/03/29(月) 04:42:57
fxみたいにコンパイルするだけでGUI込みの実行形式に変換できる奴とかもっと増えればいいな
0053デフォルトの名無しさん
垢版 |
2010/03/29(月) 07:39:14
>>51
…まあ、Ruby/Tkはその構造上
「Tcl/Tkではこう書いていたものをRuby経由ではこう書きます」
という以上の導線はないよね…
Tcl/Tkをある程度修めていることが使用の大前提ではある
Ruby/Tkを使うなら、外見上はTcl/Tkで同じものを作れないと駄目
0054デフォルトの名無しさん
垢版 |
2010/03/29(月) 07:49:42
Ruby/Tkでの転記の仕方さえ覚えればTkのチュートリアルや解説が流用できるということでもある
実質、「Tcl/TkでのこれはRuby/Tkではどう書くのだろう」という調べものがメインになると思う
0056デフォルトの名無しさん
垢版 |
2010/03/29(月) 12:32:49
>>55
ちょっと上のレスにも似たようなのがあったけど、別にウィンドウアプリケーション作るのが目的じゃないから
Ruby/Tkを使うことが目的だからその指摘は的外れ
0058デフォルトの名無しさん
垢版 |
2010/03/29(月) 18:40:21
勉強最下位

$ 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
0060デフォルトの名無しさん
垢版 |
2010/03/29(月) 19:57:55
TkTable.2.10.tar.gz をダウンロードしたんだけど
cygwin でも msvc でも make しようとすると
tktable.tcl.h が見つからないっていわれる
ぐぐっても英語のページしか出て来ないし
いまいちピントのずれたサイトばかり
だれも使ってないのだろうか
0061デフォルトの名無しさん
垢版 |
2010/03/29(月) 19:59:25
馬鹿には使えないことが証明されました
0062デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:00:10
wxRuby とか RubyQt とかならこんなに苦労しなくても済むのかなぁ
0063デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:01:22
>>58
rubyとだけタイプしてコード書くよりirbを推奨。
readlineが使えるなら irb -rreadline おすすめ。
# mainloopするまでフィードバックはないことについては
# 上のほうになんか解決策があった気がする。

pythonの対話モードと似たようなものだ。
# ipythonってのもあるんだな…
0064デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:15:56
>>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()
0066デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:21:27
>>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が入ってないってことですかね
0068デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:32:28
すみません
t = Tk::TkTable.new(:rows=>5, :cols=>5)
でもだめです
0069デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:33:55
>>66
TkPackageが入ってないんじゃなくて
TkPackageからTkTableをロードしにいくところで
TkTableが無いと言われているだけ

結局TkTableをインストールしないといけない
0070デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:34:51
もはやRuby側の問題じゃない罠
0071デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:35:49
みなさん色々アドバイスありがとうございます
なんかもう気力が無くなりつつあります
こんなに面倒だからみんな語りたがらないんですね
0074デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:39:30
Ruby初心者スレでRubyXXの中ではRuby/Tkが一番相性が良い
とかなんとか言ってる方がいらっしゃったので・・・
0076デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:51:55
あきらめて Ruby/Qt にしようと思ったら
ttp://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=Ruby%2FQte
落ちてる orz
0079デフォルトの名無しさん
垢版 |
2010/03/29(月) 20:56:34
Rubyを窓から捨てろ
いますぐニダ
0084デフォルトの名無しさん
垢版 |
2010/03/29(月) 21:27:49
ウインドウを左右二つに区切って
左に100ます、右に入力欄
右の入力欄の入力に応じて左の100ますを書き換える

これならTkでも十分できるんじゃないか
0085デフォルトの名無しさん
垢版 |
2010/03/29(月) 21:31:46
すみません
縦が(x+a)で横が(x+b)の掛け算の場合
xの2乗+ax+bx+ab
を入力したら正解にしたいのですが
どういう判定をすればよいのか分かりません
0088デフォルトの名無しさん
垢版 |
2010/03/29(月) 21:35:39
「xの2条」とかをxの右上に2があるように表示するのは
GUIじゃないと出来ないですよね?
0089デフォルトの名無しさん
垢版 |
2010/03/29(月) 23:01:42
>>88
回答としては、canvasに小さめのフォントで描く、なんだろうけど、
とりあえずあなたの目的にとっては本質的じゃないからあとまわしに
して x^2 のような仮表示にして先に進んだほうがいいと思う。


0090デフォルトの名無しさん
垢版 |
2010/03/30(火) 18:40:53
tkってnanの略?
ちんこだろjk
0091デフォルトの名無しさん
垢版 |
2010/03/31(水) 11:21:59
>>78
初心者スレの荒らしじゃないけど、悪いことイ・ワンからGUIしたいだけならC#にしとけw
俺もGUIも全部Rubyでやりたいなどと日頃から思うけどさすがに・・・
0092デフォルトの名無しさん
垢版 |
2010/03/31(水) 12:03:29
Ruby で GUI って結局どこの馬の骨か分からんフレームワークを
必死で寄せ集めて試行錯誤してやっと使えるようになるかなってレベル
それに出来上がったのを exe にしようとするとまた苦労が待っている
Python に比べると激しく茨の道としか思えない
0093デフォルトの名無しさん
垢版 |
2010/03/31(水) 12:21:11
>>92
ここで聞くのもアレなんだけど、
PythonのGUIツールキットはTortoiseHgやらDropboxなどの製品でも使われてみたいだけど
どういう違いがあるんだろ。
exe化しにくい他に。
Pythonの環境は参考になるんじゃないかな。

そもそもGUI望まれてなくて、今時webアプリでいーじゃんという意見は半分は同意したいがw
0094デフォルトの名無しさん
垢版 |
2010/03/31(水) 13:11:35
たとえばTcl/Tk自体は歴史のあるGUIツールキットだ(X上では安定)
それをきちんとした統合度で呼んでるきちんとした言語があればそれが使われる
Pyhotn部分がしっかりしていたから使われただけ
それがRubyじゃなかったのは、RubyがPythonじゃなかったから
0095デフォルトの名無しさん
垢版 |
2010/03/31(水) 13:20:37
まあ、Python on RailsじゃなくてRuby on Railsだったかは、
PythonがRubyじゃなかったから、ということか
どっちも・・・
0097デフォルトの名無しさん
垢版 |
2010/03/31(水) 14:23:41
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で作った方が手っ取り早いぞ。
0099デフォルトの名無しさん
垢版 |
2010/03/31(水) 15:32:05
GUIであるからにはEXEになってねーと意味ねーよ
■ このスレッドは過去ログ倉庫に格納されています

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