你能用Ruby创建输入框吗?

时间:2012-09-20 19:15:19

标签: ruby

我过去曾使用VBScript进行QTP,我可以使用输入框功能显示弹出窗口。

我想知道是否有办法用Ruby做到这一点?我需要一个弹出窗口,允许用户在WATIR脚本执行之前输入一些信息。

我环顾了StackOverflow,但没有看到任何东西。

5 个答案:

答案 0 :(得分:3)

这里有一个如何从Ruby中的vbscript获取消息框的示例,我将尝试以相同的方式获取输入框

require "Win32API"  

message = "This is a sample Windows message box generated using Win32API"  
title = "Win32API from Ruby"  

api = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')  
api.call(0,message,title,0)  

答案 1 :(得分:1)

也许这个示例代码可以帮助您(仅限win32):

require 'win32ole'

def inputbox( message, title="Message from #{__FILE__}" )
  vb_msg = %Q| "#{message.gsub("\n",'"& vbcrlf &"')}"|
  vb_msg.gsub!( "\t", '"& vbtab &"' )
  vb_msg.gsub!( '&""&','&' )
  vb_title = %Q|"#{title}"|
  # go!
  sc = WIN32OLE.new( "ScriptControl" )
  sc.language = "VBScript"
  sc.eval(%Q|Inputbox(#{vb_msg}, #{vb_title})|)
  #~ sc.eval(%Q|Inputbox(#{vb_msg}, #{vb_title}, aa,hide)|)
end
def popup(message)
  wsh = WIN32OLE.new('WScript.Shell')
  wsh.popup(message, 0, __FILE__)
end


str = "a |  does not break it...\n\nOne\n\tTwo tabbed\nThree..."
res = inputbox( str, "demonstration | title")
popup %Q|When asked\n\n"#{str}"\n\nyou answered:\n#{res}| 

这导致:

Inputbox

它跟随一个弹出框。

另见http://rubyonwindows.blogspot.com/2007/04/ruby-excel-inputbox-hack.html

答案 2 :(得分:1)

因为我无法找到一个用于Windows的输入框api,所以如果我需要一些简单的对话框,我大部分时间都会这样做。与红鞋不同,它只是一种易于安装的宝石。

require 'green_shoes'
Shoes.app{
  e = edit_line
  button("Click me!"){alert("You entered." + e.text)}
}

答案 3 :(得分:0)

Ruby是一种编程/脚本语言,所以它本身并没有做任何类型的GUI或图形相关的东西。话虽如此,有很多项目和框架使用Ruby来完成您正在寻找的类型。最重要的是使用Ruby创建Web应用程序的Ruby on Rails,以及用于创建计算机应用程序的Shoes

还有这个问题 What's the best/easiest GUI Library for Ruby?

答案 4 :(得分:0)

我建议shoes,它是一个用于编写图形应用程序的跨平台工具包。

我用它并且非常酷,你可以做类似的事情:

Shoes.app :width => 300, :height => 200 do
  stack do
    edit_line :width => 400
  end
end