根据ascii艺术定义生成对话框。

ascii-designer的Python项目详细描述


一个图书馆:

  • 从ascii art创建gui(使用定义良好的语法)
  • 将小部件映射到虚拟类属性
  • 让你在离开的同时,从模板构建的无聊部分中解脱出来 控制。

您是否曾在编辑器中潦草地设计过这样的表单:

Text to transform:   [ Text_      ]

Select transformation:

(x) Uppercase
( ) Lowercase
( ) Title-case

    [ OK ]            [ Cancel ]

…希望你能完成设计并开始编码?不再希望:

from ascii_designer import AutoFrame

class TextTransformer(AutoFrame):
    f_body='''
                            |    <->       |
        Text to transform:   [ Text_      ]

        Select transformation:

        (x) Uppercase
        ( ) Lowercase
        ( ) Title-case

            [ OK ]            [ Cancel ]~

    '''
    def ok(self):
        text = self.text
        if self.uppercase:
            text = text.upper()
        elif self.lowercase:
            text = text.lower()
        elif self.titlecase:
            text = text.title()
        print(text)
        self.close()

    def cancel(self):
        self.close()

if __name__ == '__main__':
    TextTransformer().f_show()

一些评论,顺便强调一下这个库的功能:

  • 正如您可能猜到的,所有的魔法都发生在AutoFrame中。这个 f_show调用触发窗体的呈现。所有保留属性 以f_开头,以便在子类化时避开您的方式。
  • 有一个定义良好的语法用于获取常用的小部件类型。在 示例可以找到标签(纯文本)、文本框、单选按钮和普通 按钮。
  • 这些列由带有管道字符的header行定义。这个 减号表示拉伸柱。(这些</>字符只是 装饰。)
  • 列跨度很容易通过在管道下面使用非a-空间来实现 符号。行跨度也可以通过在后续单元格前添加 {字符。
  • 锚定由单元格是否填充了空间来控制。为了 例如,当“取消”按钮居中时,文本框将拉伸。这个 可以使用颚化符字符,而不是脆弱的尾随空格。
  • widget id通过小写和白名单自动生成 标题。
  • 如果一个方法与一个小部件ID同名,那么它是^ {STR 1 } $自动 将绑定到通常需要的事件(如果是按钮,请单击,值在 基本上是别的情况)。哦,而且closequit已经是 为了你的方便。
  • 否则,您可以使用小部件的id like来检索和设置它的值 类属性
  • f_show()捕获所有常用的样板文件并简单地显示 框架。它可以用于顶层和附加帧。
  • 还要注意类名是如何自动转换为窗口标题的。 通过设置.f_title覆盖。
  • 创建的小部件是“raw”,本机小部件。您可以配置工具包 使用。目前有一个qt和一个tkinter实现。本地人 可以使用form["widget_id"](或 form.f_controls["widget_id"])。

一般的哲学是不要把所有的东西都用包装纸涂满。相反, 该库专注于特定的任务-构建布局、事件/值 绑定-让你用你知道的和(可能)喜欢的api做任何事情。

安装

pip install ascii_designer

要求:python>;=3,attrs。显然,要使用qt工具包,您需要Pyqt4

待办事项

阿尔法状态软件,主要工作。

在qt实现中缺少一些东西(最明显的是列表和树) 因为我现在专注于TK工具包。

测试覆盖率低,说话礼貌。

这是一个爱好项目。如果你需要一些快速的,打开一个问题或发送一个拉请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
关于JSP转发的java问题   强制Oracle驱动程序向java输出带有时区的时间戳。sql。使用getObject时的时间戳   Java中的配置单元UDF在创建表时失败   eclipse怀疑Java上下文加载器使用不再存在的文件   范围如何为我没有在JavaEE中编写的类定义单例对象?   java Eclipse未启动:JVM已终止。退出代码=14   仅存在于子类中的属性的java别名(Hibernate标准)   Java字符串插入错误   无法打开java@PropertySource,因为它不存在   java从多项目Maven配置生成WAR文件   java Hibernate@Lob注释不再有效:不能用几个字符串超过CLOB的总长度?   java jbutton的鼠标侦听器包含if/else循环阻塞的jvm?   java如何删除最近24小时安卓的通话记录   java Android服务+计数器不工作   java如何获取返回结果的服务器的数据,我希望将该结果更新到另一台服务器   java从javax获得“一切”是可能的。命名。初始上下文?   java Spring云门请求超时不适用于路径   java web应用程序会话缓存   java使用dialogflow的响应通过google助手打开我的应用程序   MongoDB添加createAt updatedAt字段java