【问题标题】:Can you create inputbox with Ruby?你能用 Ruby 创建输入框吗?
【发布时间】:2012-09-21 04:22:40
【问题描述】:

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

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

我环顾 StackOverflow,但什么也没看到。

【问题讨论】:

  • 通过 ruby​​,您是指在 rails 上使用 ruby​​,还是使用其他 ruby​​ web 框架?
  • 把这个问题加倍。您只想要 ruby​​ 中用于桌面应用程序的快速 UI 框架吗?
  • 我听说鞋子 (shoesrb.com) 适合 Ruby 前端,但我从未使用过。

标签: ruby


【解决方案1】:

这里是一个如何在 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)  

【讨论】:

  • 酷。它不适用于 ruby​​ on rails 并且可以在 Mac 上完成/
【解决方案2】:

也许这个示例代码对你有帮助(仅限 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}| 

这会导致:

它跟随一个弹出框。

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • @ Peter 我尝试安装 GreenShoes 但收到此错误消息:构建本机扩展。这可能需要一段时间... 错误:安装 green_shoes 时出错:错误:无法构建 gem 原生扩展。 /Users/joe.fleck/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb 是不是因为我运行的是ruby-1.8.7?谢谢。
    • 可能是,我在 windows 上使用 ruby​​-1.9.3-p194 并没有遇到任何问题,我什至在没有安装 Ruby 的 windows pc 上使用它,只是从网络共享运行 ruby​​跨度>
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      我用过它,它很酷,你可以这样做:

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

      【讨论】:

        猜你喜欢
        • 2020-07-04
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        • 2021-02-18
        • 2014-06-28
        • 2020-03-29
        • 1970-01-01
        • 2018-07-29
        相关资源
        最近更新 更多