GUI/TUI linux library

7

有没有任何UI库可以从同一源代码构建文本用户界面(ncurses)和图形用户界面(GTK?QT?)? 我知道debconf可以与各种前端一起使用,我想构建类似的但可编程的东西。

8个回答

4
这个库可以实现使用一个代码库支持ncurses、gtk和qt,它不仅适用于YaST自身,而且提供了您所需的功能。
实际上,libyui只需要标准C++库和phtreads(如果我没记错的话)。UI插件当然需要相应的库(Qt,ncurses)。YaST通过一组YCP绑定使用libyui,这些绑定在libyui之上提供了类似YCP的API。
该库有点低级(在事件循环下面一层),我的同事Klaus Kämpf在他的博客中介绍了使用它的一些方法,包括使用swig将其绑定到脚本语言。
唯一与SUSE相关的部分是打包,因此您需要自己进行打包。Stackoverflow不允许我链接超过一次。该库的代码链接在Klaus的博客中。将“qt”替换为libyui,“ncurses”替换为插件的代码即可。
还可以搜索“YaST Independence From YCP”以找到Andreas Jäger关于此主题的博客文章。

请注意,目前有一个Google SoC项目正在进行中,旨在使libyui更加独立:http://nbprashanth.wordpress.com/category/gsoc - duncan

2
你可以编写一个使用ncurses的程序,然后使用PDCurses将其转换为X11应用程序 - 就像readme中所宣传的那样。
我知道这一点,因为我已经将其用作可移植的curses,尽管我从未测试过它的X11功能。

2

虽然不是一个库,但你可以考虑编写一个网络应用程序,它能够良好地降级到Lynx。


跳出常规思维很棒。 - Waslap

2

GoboLinux团队为Python创建了自己的工具包,名为AbsTK,他们将其用于安装程序,实际上效果非常好。我自己从未使用过这个工具包,但是使用它构建的应用程序似乎很稳定。


1

使用同时针对文本模式和GUI环境的库,你有很大的风险陷入两者最糟糕的境地。

更好的方法是使用MVC模式来构建代码,并为每个目标平台提供单独的视图和控制器。将所有逻辑推到模型类中还有其他几个好处:

  • 代码更容易测试,因为你被迫将用户界面排除在实际领域逻辑之外。
  • 你的程序可以拥有非常不同的用户界面,例如Web UI或由语音驱动的UI。
  • 通过直接访问模型类,就像控制器类所做的那样,你可以轻松地完全不使用UI(即脚本化)运行程序。

1

被诅咒的GTK,但它似乎有点过时了。我找到了一些关于将Qt移植到ncurses的引用,称为Qt Console,但它似乎已经消失了。


0

我认为在编译Linux内核时用于配置的工具是dialog/cdialog/xdialog。但是我已经有一段时间没有编译内核了,所以我的记忆可能有误。我能找到的最有希望的链接是Xdialog


0

我知道它可以在图形化环境下运行。你能提供关于在ncurses上运行它的信息链接吗? - Grzegorz Wierzowiecki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接