我想构建一个基于文本的 UI 的应用程序,它类似于 Ruby 中的 Linux 命令“top”。我可以使用哪些工具包和/或技术来构建 UI?特别是我想要一个不断更新的控制台窗口区域,以及按键操作显示的能力。
问问题
2411 次
3 回答
2
对于终端接口,请参见http://ncurses-ruby.berlios.de/
于 2009-05-19T03:01:09.927 回答
1
Ncurses 非常适合控制台应用程序,您可以找到许多语言的绑定(或仅使用 shell 脚本)。甚至还有一个被诅咒的 gtk ( http://zemljanka.sourceforge.net/cursed/ ) 虽然我认为它的工作已经停止了很长时间。
您没有提到您的平台,但是对于 OS/X,有一个很棒的小应用程序叫做 Geektool ( http://projects.tynsoe.org/en/geektool/ ),它允许您将脚本输出放在桌面上。我使用一个小的 ruby 脚本来生成我的顶级进程列表:
puts %x{uptime}
IO.popen("ps aruxl") { |readme|
pslist = readme.to_a
pslist.shift # remove header line
pslist.each_with_index { |i,index|
ps = i.split
psh = { user: ps[0], pid: ps[1], pcpu: ps[2], pmem: ps[3],
vsz: ps[4], rss: ps[5], tty: ps[6], stat: ps[7],
time: ps[8], uid: ps[9], ppid: ps[10], cpu: ps[11], pri: ps[12],
nice: ps[13], wchan: ps[14], cmd: ps[16..ps.size].join(" ") }
printf("%-6s %-6s %-6s %s", "PID:", "%CPU:", "%Mem", "Command\n") if index == 0
printf("%-6d %-6.1f %-6.1f %s\n",
psh[:pid].to_i, psh[:pcpu].to_f, psh[:pmem].to_f, psh[:cmd]) if index < 10
}
}
(这可能会更好,但它是我编写的第一个 ruby 脚本,因为它有效,所以我从未重新审视它来改进它——而且它不需要输入。无论如何,它可能有助于给你一些想法)
于 2009-05-19T03:11:57.503 回答
0
有stfl但我不知道是否维护了 ruby 绑定。ncurses 可能是你最好的选择。
于 2009-05-20T11:59:53.190 回答