duangsuse::Echo
GimpApi.py
下一步可能是支持 GIMP 的导入导出和画布操作功能
可以让 Python 用 GIMP 画画,这样就有更多可能
可以让 Python 用 GIMP 画画,这样就有更多可能
duangsuse::Echo
规范大概是这样: Code 是一个文本图层,包含程式码,目前仅仅创建 VFS 不需要关心其内容 Trace 是一个文本图层,包含变量的追踪 要提供一个 GUI,展示变量列表 List(Label, Textfield) 『同步』操作:利用正则表达式解析所有键值对 (k = v) /(\w+)\s*=\s*(.+)$/ 更新列表 『更新』操作:替换原文本为更新值后的文本 Visual 是可视化图层组,包含所有需要可视化的图层 这些图层的名字做固定处理即可得到相应数据指针的名字 Vals 是不变…
现在大概差:
GUI 的一个 Listbox(Label, Text) 组件正在使用 Listbox 实现
这个列表的功能大概就是『做一帧程序步骤的时候,把变更的变量修改一下,然后就点一下更新就可以同步到程序视图』
Trace 的更新和同步按钮已经加上了,解析和 dump 也已经完成
GUI 的一个 Listbox(Label, Text) 组件正在使用 Listbox 实现
这个列表的功能大概就是『做一帧程序步骤的时候,把变更的变量修改一下,然后就点一下更新就可以同步到程序视图』
Trace 的更新和同步按钮已经加上了,解析和 dump 也已经完成
Trace 驱动所有的 Visual 箭头指向Vals 是不变量的图层组,其中每个图层都对照了一个 Visual 里的图层,映射方式是 ("v" + x)
每个 Pointers 项目都对照到了 Visual 里的图层或 Code,映射方式是 ("p" + x.lower() + "s")
更新箭头在加提供一个『更新箭头』操作,根据指定的『Trace 层』变量名自动显示 Trace 层变量指向(数组下标,从 0 起始)并且隐藏前一个箭头的显示(上次设置的箭头)上移下移/重置 Code 指针也在进行中
duangsuse::Echo
https://github.com/duangsuse/GimpVisual #GitHub #Python #project
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py
从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了:
<head>
<title>Hello World</title>
</head>
<body>
<text>
<b>String</b>
<a id="str">|sg.</a>
</text>
</body>
</html>
不使用缩进也可以:
<html><head><title>Hello World</title></head><body><text><b>String</b><a id="str">|sg.</a></text></body></html>
Util.py 里没有二进制处理的函数或者 Maybe, Either, Ap, Functor 什么的,不是很好.... 希望早点写完
从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了:
from Markup import MarkupBuilder<html>
def test():
m = MarkupBuilder(2)
m > 'html'
m > 'head'
m > 'title'
m < 'Hello World'
m <= 2
m > 'body'
m > 'text'
with m.tag("b"):
m < 'String'
m >= ['a', {'id': 'str'}]
m < '|sg.'
m <= 4
return m
mark = test()
print(mark.make())
<head>
<title>Hello World</title>
</head>
<body>
<text>
<b>String</b>
<a id="str">|sg.</a>
</text>
</body>
</html>
不使用缩进也可以:
<html><head><title>Hello World</title></head><body><text><b>String</b><a id="str">|sg.</a></text></body></html>
Util.py 里没有二进制处理的函数或者 Maybe, Either, Ap, Functor 什么的,不是很好.... 希望早点写完
GitHub
duangsuse/GimpVisual
🐺 Alogrithm visualization with Gimp Python script. Contribute to duangsuse/GimpVisual development by creating an account on GitHub.
duangsuse::Echo
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py 从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了: from Markup import MarkupBuilder def test(): m = MarkupBuilder(2) m > 'html' m > 'head' m > 'title' m < 'Hello World' m <=…
Python 和 Lua 一样,都太灵活了,连类定义方法分派都是那么的... 动态
而且奇怪....
不过习惯了
而且奇怪....
不过习惯了
duangsuse::Echo
Python 和 Lua 一样,都太灵活了,连类定义方法分派都是那么的... 动态 而且奇怪.... 不过习惯了
最终导致,一但新增限制,就会造成麻烦。
duangsuse::Echo
https://github.com/duangsuse/GimpVisual/blob/master/Markup.py 从中抽提出来了 MarkupBuilder,还比较好玩,现在已经支持写带缩进的文档了: from Markup import MarkupBuilder def test(): m = MarkupBuilder(2) m > 'html' m > 'head' m > 'title' m < 'Hello World' m <=…
使用 GIMP 的 Python REPL 开发插件在多线程上好像有很严重的问题,不可能直接这么做了
之前一直把开发用的 Tcl/Tk 主事件循环放在 main 上
然而,回来发现这么做导致 gimp 不能即使更新后面的图片显示....
我又单独给 gui 开个线程放事件循环,可是据观察发现那个线程的性能已经低到了可怕的程度... 一个 Tk 按钮要花费 5 秒以上才能被初始化...
之前一直把开发用的 Tcl/Tk 主事件循环放在 main 上
然而,回来发现这么做导致 gimp 不能即使更新后面的图片显示....
我又单独给 gui 开个线程放事件循环,可是据观察发现那个线程的性能已经低到了可怕的程度... 一个 Tk 按钮要花费 5 秒以上才能被初始化...
duangsuse::Echo
最终导致,一但新增限制,就会造成麻烦。
#Python 嗯,也可以去用 Cython
我也就觉得 CPython 好点的就是强化了 Lua 的元方法设计、FFI、面向对象系统、模块化系统、2D 文法、有 Fiber、Async function
其他的... 我觉得不怎么样
我也就觉得 CPython 好点的就是强化了 Lua 的元方法设计、FFI、面向对象系统、模块化系统、2D 文法、有 Fiber、Async function
其他的... 我觉得不怎么样
Tcl/Tk 简直有毒... 刚才我才记得 tkinter 创建消息的方法是
event_generate
duangsuse::Echo
Tcl/Tk 简直有毒... 刚才我才记得 tkinter 创建消息的方法是 event_generate
说起来 Tk 还真是幸福,Tcl(Tool command language) 明明不是那么显眼,却会被 Ruby、Python 这些内部缺乏 GUI 的应用程序进行内部钦定集成,语言内集成语言,还能使用 StringVar, BooleanVar 这种包装来交互,也是没谁了
duangsuse::Echo
说起来 Tk 还真是幸福,Tcl(Tool command language) 明明不是那么显眼,却会被 Ruby、Python 这些内部缺乏 GUI 的应用程序进行内部钦定集成,语言内集成语言,还能使用 StringVar, BooleanVar 这种包装来交互,也是没谁了
想使用裸 Tk 的可以双击 man wish, man tclsh
不知道这么用(肯定的)可以看 https://www.tcl.tk/ ...
不知道这么用(肯定的)可以看 https://www.tcl.tk/ ...
This media is not supported in your browser
VIEW IN TELEGRAM
虽然 Tk 的确比起 AWT/Swing 来说是差很多,但是我还是为了需求做了一个简单的 K-V 表控件...
对于 GUI 来说...
Tk 有 place, pack, grid, canvas, text 这 5种布局方式
说到盒模型
有一个 content rect
一个 border width
四个 margin, 四个 padding...
Tk 有 place, pack, grid, canvas, text 这 5种布局方式
说到盒模型
有一个 content rect
一个 border width
四个 margin, 四个 padding...