根据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 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工具包。
测试覆盖率低,说话礼貌。
这是一个爱好项目。如果你需要一些快速的,打开一个问题或发送一个拉请求。