查看完整版本: 请问Ruby可以编写界面化的程序吗?

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]
页: [1]
查看完整版本: 请问Ruby可以编写界面化的程序吗?