有没有带有Python绑定的curses工具包库?

10

我正在为了娱乐和实用而编写一个基于文本的十六进制文件查看器(我打算为许多不同的文件类型添加语法高亮功能),想知道是否有任何curses工具包可供使用。

虽然我可能会自己编写一些东西来熟悉GUI工具包的工作方式,但知道未来我和其他人可以使用的有用库会很好。

3个回答

11

Urwid是我所知道的最好的用于Curses和Python的库。

或者,你可能也会对snack(基于newt的库)感兴趣。

如需更多信息,请查看此问题


零食链接已损坏。 - Shadi
@shadi 看起来 Snack 可能已经包含在 Newt 本身中了:https://github.com/mlichvar/newt/blob/master/snack.py - jcollado
我明白了。维基页面上链接的newt教程也已经失效(教程链接),而newt主页上也没有任何文档或链接。你有没有想过在哪里可以找到newt的文档? - Shadi
1
@shadi 在互联网档案馆中,您仍然可以找到该教程的备份版本吗? https://web.archive.org/web/20170124075941/http://gnewt.sourceforge.net/tutorial.html - jcollado

6

npyscreen

Npyscreen是一个Python小部件库和应用程序框架,用于编程终端或控制台应用程序。它建立在标准库的ncurses之上。

该库的重点是提供一种快速开发控制台应用程序的方法。通常,将控件添加到屏幕只需要一行代码。

这个框架应该足够强大,可以创建从快速简单的程序到复杂的多屏应用程序的所有东西。

npyscreen screenshot

#!/usr/bin/env python
# encoding: utf-8

import npyscreen
class TestApp(npyscreen.NPSApp):
    def main(self):
        # These lines create the form and populate it with widgets.
        # A fairly complex screen in only 8 or so lines of code - a line for each control.
        F  = npyscreen.Form(name = "Welcome to Npyscreen",)
        t  = F.add(npyscreen.TitleText, name = "Text:",)
        fn = F.add(npyscreen.TitleFilename, name = "Filename:")
        fn2 = F.add(npyscreen.TitleFilenameCombo, name="Filename2:")
        dt = F.add(npyscreen.TitleDateCombo, name = "Date:")
        s  = F.add(npyscreen.TitleSlider, out_of=12, name = "Slider")
        ml = F.add(npyscreen.MultiLineEdit,
               value = """try typing here!\nMutiline text, press ^R to reformat.\n""",
               max_height=5, rely=9)
        ms = F.add(npyscreen.TitleSelectOne, max_height=4, value = [1,], name="Pick One",
                values = ["Option1","Option2","Option3"], scroll_exit=True)
        ms2= F.add(npyscreen.TitleMultiSelect, max_height =-2, value = [1,], name="Pick Several",
                values = ["Option1","Option2","Option3"], scroll_exit=True)

        # This lets the user interact with the Form.
        F.edit()

        print(ms.get_selected_objects())

if __name__ == "__main__":
    App = TestApp()
    App.run()

0
在GitHub上有一个免费使用、学习、修改和重新分发的高级GUI库,位于 "https://github.com/rigordo959/tsWxGTUI_PyVx_Repository"。
它是使用"curses"低级GUI包在Python 2x和3x中实现的。
您的应用程序可以使用像素模式"wxPython"高级GUI API的字符模式子集进行编程。它支持带有键盘和鼠标输入以及各种终端仿真器,包括彩色xterms(具有64个颜色对的8种颜色和256个颜色对的16种颜色)和非彩色vt100/vt220。

由于看起来这是你的代码 - 它真的非常需要一些代码示例,而且说实话,仓库名称也有点让人反感。无论如何,感谢你的回答,欢迎来到 Stack Overflow :) - Llamageddon
是的,这是我的代码,在GitHub存储库中,你不仅可以找到API的源代码,还可以找到用于测试和演示它的示例代码。由于我正在模仿wxPython API,你可以查看wxPython的介绍和教程。我的公告提供了分发和使用概述。Python 2x代码庞大而复杂(超过100,000行可执行Python代码)。我的手册提供了屏幕截图;我的笔记本包括介绍、工程风格规范、设计和用户文档。 - Richard Gordon

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