keymi 2008-8-19 11:14
请问Ruby可以编写界面化的程序吗?
以前熟悉Windows编程,编写窗口一类的程序。
请问用Ruby可以编写界面化的程序吗?是窗口方式的吗?还是网页形式的?
大概需要用到哪些类和方法呢?谢谢!
wscc111 2008-8-19 11:47
rails編寫網頁的多些,而且功能也比较强大
支持web开发!!
wscc111 2008-8-19 11:49
类,方法
主要是基本的,string,array ,hash,等等
类 api里有介绍
api:[url]http://api.rubyonrails.org/[/url]
Hozaka 2008-8-19 20:10
都可以。开发应用程序可以使用 Tk,开发Web应用可以直接用CGI
keymi 2008-8-25 14:05
谢谢Hozaka,就是要找tk这样的界面化开发工具开发GUI,努力研究中。
keymi 2008-8-26 09:40
再顶上去,请问Ruby/Tk可以编写listControl这样的多列列表这样的控件吗?有人知道吗?
keymi 2008-8-29 09:12
谢谢楼上的各位哈!!最后我用的是Ruby+GTK2,开发出了在Windows运行良好的界面化程序,很好用!!
推荐使用Ruby+GTK2开发Windows的应用程序!!:D
sevk 2008-9-6 12:06
这是一个tk的界面程序,有截图。
[code]#!/usr/local/bin/ruby
require 'tk'
require 'tkafter'
$running = nil
$acctime = 0
def load
if File.exists?('status.txt')
File.open('status.txt', 'r') do |f|
$acctime, $running = Marshal.load(f.read)
end
if $running
$start.configure('text' => 'Stop')
$after.start
else
$start.configure('text' => 'Start')
end
update_timer
end
end
def save
%(
File.open('status.txt', 'w') do |f|
f.write Marshal.dump([$acctime, $running])
end)
end
def start
if $running
$acctime += Time.now - $running
$start.configure('text' => 'Start')
$running = nil
$after.stop
update_timer
else
$running = Time.now
$start.configure('text' => 'Stop')
$after.start
end
save
end
def reset
$acctime = 0
$running = nil
$start.configure('text' => 'Start')
$after.stop
update_timer
end
def update_timer
time = $acctime
if $running
time += Time.now - $running
end
h = time.to_i / 3600
m = (time.to_i % 3600) / 60
s = time.to_i % 60
micro = ((time - time.to_i)*10).to_i
time = sprintf("%02i:%02i:%02i.%1i", h, m, s, micro)
$timer.configure('text' => time)
end
def setup_window
root = TkRoot.new {title "Timer"}
root.configure('background' => 'yellow')
f = TkFont.new('size' => 20, 'weight' => 'bold')
$timer = TkLabel.new(root) {
text '00:00:00.0'
font f
background 'yellow'
pack('pady' => 20, 'padx' => 20)
}
$start = TkButton.new(root) {
text 'Start'
pack('side'=>'left', 'expand'=>1, 'fill'=>'both')
command {start()}
}
TkButton.new(root) {
text 'Reset'
pack('expand'=> 1, 'side'=>'right', 'fill'=> 'both')
command {reset()}
}
end
setup_window
$after = TkAfter.new(100, -1, proc{update_timer})
#load
Tk.mainloop[/code]