Size: 5226
Comment: 下了他的src版,就可以用了。exe版就不行
|
← Revision 58 as of 2013-10-22 01:25:18 ⇥
Size: 10125
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
自然,方便的开发管理环境! ''' [[TableOfContents]] |
自然,方便的开发管理环境 ''' '''[[http://leoeditor.com/|Leo's Home --主页]]'''下载安装 * [[ZqStudy/MyLearningSkill#Leo|俺的工具箱]] ~ [[http://www.programmer.com.cn/3484/|《程序员》7月刊]] 介紹Leo 体验... <<TableOfContents>> ||<^><<MonthCalendar>><<BR>>-- ZoomQuiet [<<DateTime(2005-01-05T12:32:39Z)>>]||<^>'''学习日志'''<<Include(^LeoEnvironment/200.*,'日志简报',4,sort=descending,items=30,titlesonly)>>|| |
Line 7: | Line 13: |
* LiterateProgramming -- 文章化编程 | * LiterateProgramming -- 文学编程 |
Line 10: | Line 16: |
* 体验:[[BPUG/2006-07-30|CPUG第九次.Leo+lightTracker]] |
|
Line 11: | Line 19: |
* http://webpages.charter.net/edreamleo/LeoProse.gif * [http://webpages.charter.net/edreamleo/front.html Leo is ...] * 这个纯Python 的编辑环境用最简单的代码实现了如此丰富的编程思想! |
* {{http://leoeditor.com/LeoProse.gif}} * [[http://leoeditor.com/front.html|Leo is ...]] * 这个纯Python 的编辑环境用最简单的代码实现了如此丰富的编程思想 |
Line 19: | Line 27: |
* 下载帮助文件来学习 attachment::sbooks.chm | * 下载帮助文件来学习 [[attachment:_sbooks.chm]] * 在线阅读 : [[http://leoeditor.com/intro.html|The Leo Tutorial — Leo 4.11 documentation]] * [[http://leoeditor.com/slides.html|Slides — Leo 4.11 documentation]] * [[http://leoeditor.com/usersguide.html|Leo’s Users’ Guide — Leo 4.11 documentation]] == 开发体验 == * 我开发后期全都使用Leo 管理了项目文件 * 下载尝试: [[attachment::CVSanalyser.leo]] |
Line 21: | Line 36: |
== 开发体验 == * 通常的界面: * attachment::leo0-snap.jpg * 可以发现,Leo 仅仅使用了Tk 来实现GUI ,可以说是Python 中最轻巧,通用的GUI组织方式! * '''File encoding: UTF-8''' 所有的文件是以 UTF-8 编码管理的! * Leo 文件本身却是标准的XML文件! * 我开发后期全都使用Leo 管理了项目文件 * 下载尝试: attachment::CVSanalyser.leo * 我喜欢的形式: * 通过菜单命令:'''"Window/Toggle Split Direction"''' 设置 * attachment::leo1-snap.jpg * Leo 4.0 以后,由于文章化编程的发展,已经实现了很多方便的功能! * 不过在下仅仅学会了其中几种就感觉有些离不开了! * 这种有强烈快感的杀手级工具,近日来就发现了 [http://wwy.iseetimes.com/blog/?q=node/view/494&PHPSESSID=bb5a4a0f6bf2ac3a1cfaff7b173c41c8 Scrapbook! FireFox 的资料管理插件!] * Leo 知道已经有两年了,可是一直没有使用起来....后悔! * 仅仅用作分类记事本: * attachment::leo-regbook.jpg |
||<^>通常的界面<<Include(/currently)>>||{{attachment::leo0-snap.jpg}}|| ||<^>我喜欢的形式:<<BR>>通过菜单命令:'''"Window/Toggle Split Direction"''' 设置||{{attachment::leo1-snap.jpg}}|| ||<^><<Include(/UsageNoteBook)>>|| {{attachment::leo-regbook.gif}}|| |
Line 41: | Line 43: |
* attachment::leo-scrap.jpg * 以及前示的项目管理了! * 因为可以自动与外部文件同步哪! * 注意上面的截屏,在Leo 载入时,自动的将 '''@file '''指示的文件,从外部文件更新入Leo 文件了! |
* {{attachment::leo-scrap.jpg}} * 以及前示的项目管理了 * 因为可以自动与外部文件同步哪 * 注意上面的截屏,在Leo 载入时,自动的将 '''@file '''指示的文件,从外部文件更新入Leo 文件了 |
Line 46: | Line 48: |
* 所以,可以象 NewEdit,UltraEdit 等等编辑环境那样来开发程序,而在外部执行调试! * 其实 Leo 也开放 Script 接口,你可以来开发定制一些功能的! |
* 所以,可以象 NewEdit,UltraEdit 等等编辑环境那样来开发程序,而在外部执行调试 * 其实 Leo 也开放 Script 接口,你可以来开发定制一些功能的 ==== @ignore ==== * 保存时,不改变外部文件。此项一般要去除。 |
Line 50: | Line 54: |
* 可以简单的使用 '''@others'''标签来包含当前结点以下的所有结点! * 象XSL 中的{{{<xsl:for-each select="//.">}}} 哈哈哈!!! |
* 可以简单的使用 '''@others'''标签来包含当前结点以下的所有结点 * 象XSL 中的{{{<xsl:for-each select="//.">}}} 哈哈哈 |
Line 54: | Line 58: |
* Leo 的 '''File/Import.../Import To @file''' 命令,支持对 C/C++/C#;Java;Python;Perl...语言的自动分析文章化组织的导入! | * Leo 的 '''File/Import.../Import To @file''' 命令,支持对 C/C++/C#;Java;Python;Perl...语言的自动分析文章化组织的导入 |
Line 60: | Line 64: |
* 只要简单的注释掉,就可以成为标准的,可以自动同步外部文件的文本结点对象了! | * 只要简单的注释掉,就可以成为标准的,可以自动同步外部文件的文本结点对象了 |
Line 65: | Line 69: |
* attachment::leo-doc.jpg | * {{attachment::leo-doc.jpg}} |
Line 67: | Line 71: |
* attachment::leo-root.jpg | * {{attachment::leo-root.jpg}} |
Line 70: | Line 74: |
* '''直观,自然的将我们的注意力,限定在小范围的代码中,而整体代码的结构,由Leo 管理了! 优雅!聪明!''' | * '''直观,自然的将我们的注意力,限定在小范围的代码中,而整体代码的结构,由Leo 管理了 优雅 聪明 ''' |
Line 73: | Line 77: |
* 在 '''@root'''限定处理下,各子结点的引用,与包含处理是使用'''<<章节>>'''标记 * 比如说:上一截屏中的 '''<<file>>''' |
* 在 '''@root'''限定处理下,各子结点的引用,与包含处理是使用 `<<章节>>` 标记 * 比如说:上一截屏中的 `<<file>>` |
Line 86: | Line 91: |
----- * 如果是团队开发,最好用@thin,另外还有比@silent更方便的命令。和@thin的文档在一起。by tomz ---- '''什么东西?研究之 ''' * [[http://leoeditor.com/atThin.html|Using @thin and @all]] * 快速翻译来学习使用 ==== @thin ==== 大多数情况中 @thin 如同 @file 一样的工作. 实际上,你可以简单的将 @file 替换为 @thin 进行正常的 outline 操作. 这里是主要几点 @file 与 @thin 不同之处: * Leo 不会在 .leo 文件的 @thin 节点树中保存信息 * 源自 @thin 的文件 (可以称作 "轻依赖"文件) 是从文件的outline 信息重建 @thin 树的. 具体的就是利用文本中 @+node 和 @-node 作为独特的标识节点 *. @all 指示符仅仅在 @thin 树中起作用. 此指示符与 @others 类似, 不过对其有些限制: 它将倒出所有标记以內的节点到文件中,包括标记为 @ignore 和 @others 以下的树会当作普通的孤立节点倒出. (不妙的体验是,原先 @others 可以限定下属节点倒出文本时的缩进,而@all 粗暴的将所有下级节点当作同级的兄弟处理了!) 对于类似 LeoPy.leo 中的 @thin leoProjects.txt 文件,@all 指示符 是必须的. leoProjects.txt 文件包含所谓"工程节点" . 即,非程序文件:仅仅是些无关数据的简单收集.这时,@others 决不会工作: Leo 会抱怨有太多的 孤节点 * 使用@thin 最有利的是,人们进行协同开发时不用频繁的同步 .leo 文件! 1. 开发者仅仅需要检入 "轻依赖"文件 到 CVS. 1. CVS仓库 "参考" .leo 文件. 实际所有相关文件除了 @thin 节点信息什么也没有包含. 1. 参考文件 当且仅当 工程中有新文件加入时才会变化. 1. 开发者们只使用本地的 参考文件 复制就可以开展自个儿的工作. 比如说, 代替直接使用 LeoPyRef.leo , 我利用叫 LeoPy.leo 的复制品. 通过 @thin 节点指引所有本地工作文件. === @root vs. @file 树 === @file 树比 @root 树使用起来方便很多: |
|
Line 87: | Line 128: |
----- | 1. @file 树需要的指示符支持比 @root 树要少; 所有 @root 树中的章节都需要声明(而且不能重名,在同一文件中!), 而 @file 树常常包含很多非命名的章节节点. 在 @file 树中, @others 指示符 行为就象关联起所有非常命名的章节. 1. 工作在 @root 树中,用户必须明确调用 Tangle 和 Untangle 命令. 而 Leo 会自动混入/出 @file 树 , 保存时混出所有变动到 outline, 重新打开 .loe 文件时自动混入所有修改从 outline. 但是, @root 树比 @file 树要 柔韧很多: 1. 在 @file 树中, 章节必须是包含在子节点中的,而且引用点也是固定的. 1. 在 @root 树中一个被声明的章节, 并不限制其可以在哪里被引用. 此外,@unit 指示符命令甚至于扩展了章节的引用, 可以不限制在一个 @root 树中! 即,你可以在一个 @root 中命名一个章节, 而在另一个 @root 树中引用(可以看作 节点的 clone 操作,只是在引用处看不到全部内容,除非混出为文件) 1. 在 @root 中的章节声明,也不限制声明的地点. @root 树与 @file 树不同之处在于: 1. 只有 @root 树可以包含章节定义行(不过 @file 中可以使用 "<< class declarations >>"类声明的专用章节) 1. 只有 @file 树可以包含 @others 指示符. 1. @c 指示符 需要章节名出现在 @root 的节点标题树中. 1. @c 指示符仅仅可以工作在 @file 树的体文本起始处.所谓 体文本是在 @root 中没有标记会被忽略,而在 @file 树是作为无命名的代码章节内容处理的节点正文文本. === 更多节点控制 === ''还是我找资料贴出来吧。是和@file相关的,不是和@root相关的。 by tomz'' * 嗬嗬 是也乎 Leo 随发行版,附带了 LeoDocs.leo (1mb)等等文档,含有极丰富的内容 呜乎哀哉 一定要好好看哪 {{{ Users Guide-->Chapter 4: Writing Programs in Leo-->Appendix 1 to Chapter 4: Using @asis, @noref and @nosent trees }}} * 有一表格 ||节点树类型||生成文件是否含结构标记注释?<<BR>> Derived files contain sentinels? || 章节或是@others 支持?<<BR>>Sections and @others expanded?|| || @file|| yes|| yes|| || @nosent|| no || yes|| || @noref|| yes || no|| || @asis|| no || no|| * 经体验, 可以简单的使用 @nosent 替换 @root ,可以象 @file 一样的使用,却又没有Python格式的注释的结构信息 * 而且,@others 章节声明也可以很好的混同使用 * 只是不能象 @root 那样在正文中使用{{{@root expfile.t2t}}} 模式的声明,而必须在 outline 树节点中显要的指明 * 如此就可以使用 Leo 方便的管理,编辑不支持 '''#''' 为注释的各种语言文件了 * 嗯嗯 ? 只是可惜的是这样一来,所有代码只能安全的存储在 .leo 文件中,生成的代码文件是干净了,但是团队开发时,就要反复同步 .leo 文件,否则,难以快速把握哪些文件受到修改了………… |
Line 89: | Line 169: |
=== Leo 安装 === * leo是运行在py2.4还是py2.3.4?我机器2个版本py都有,可是在安装leo的时候提示我没有安装py,不晓得怎么回事 --Dreamingk * 哈哈哈!!是个奇怪的问题!Leo 在 4.0 以后版本的安装程序好象有问题,不论Python 环境是少,都说是找不到,也可能是M$升级了什么东西后注册表结构变了,才这样的,我是都下载跨平台版本,解压就可以使用的,自个儿创建一个快捷方式!绝对的“绿色!”--ZoomQuiet * 下了他的src版,就可以用了。exe版就不行。 --Dreamingk -- ZoomQuiet [[[DateTime(2005-01-05T12:32:39Z)]]] |
<<Include(/Discuss)>> == 体验 == === 解决Ubuntu 下面Tk中文字体问题 === <<Include(BindTk8.5ToTkinterOnUbuntu,,from="^##startInc$",to="^##endInc$")>> <<Include(QuickReplaceTk8.5,,from="^##startInc$",to="^##endInc$")>> |
自然,方便的开发管理环境 Leo's Home --主页下载安装
Contents
-- ZoomQuiet [2005-01-05 12:32:39] |
学习日志 |
文学编程
LiterateProgramming -- 文学编程
- 也就是那种认为源代码只是构成程序的一小部分的想法。
程序的真正主体是对它的算法、结构、目的和用法的描述——实现它的源代码并不是主要的。
Leo
- 这个纯Python 的编辑环境用最简单的代码实现了如此丰富的编程思想
Leo 可以是 一个通用的数据管理环境
Leo 可以是 一个柔韧性的项目,程序或是其它数据的浏览器
Leo 可以是 一个项目管理器
Leo 可以是 一个提纲式的程序编辑器
- Leo 可以是 ....
下载帮助文件来学习 _sbooks.chm
开发体验
- 我开发后期全都使用Leo 管理了项目文件
下载尝试: :CVSanalyser.leo
通常的界面
|
|
我喜欢的形式: |
|
|
|
@file
使用 @fiile 标签(directive) 就可以将 Leo 环境用作
知识管理,项目管理
- 以及前示的项目管理了
@ignore
- 保存时,不改变外部文件。此项一般要去除。
@others
在使用 @file 标签后,
可以简单的使用 @others标签来包含当前结点以下的所有结点
象XSL 中的<xsl:for-each select="//."> 哈哈哈
自动导入
Leo 的 File/Import.../Import To @file 命令,支持对 C/C++/C#;Java;Python;Perl...语言的自动分析文章化组织的导入
- 不过,自动生成的文本中可能有一些标签:
- {{{@ignore
@language python }}}
是不属于 @file 管理范围的,
- 只要简单的注释掉,就可以成为标准的,可以自动同步外部文件的文本结点对象了
@root
是文章编辑环境的标准支持
- 可以用以 编写文档
- 组织代码也一样
- 章,节,段落 显式的组织在几个窗口中
- 对应的代码中的 类,子类,函式等等也以同样的形式组织起来
直观,自然的将我们的注意力,限定在小范围的代码中,而整体代码的结构,由Leo 管理了 优雅 聪明
<<section>>
在 @root限定处理下,各子结点的引用,与包含处理是使用 <<章节>> 标记
比如说:上一截屏中的 <<file>>
Tangle & Untangle
- 这时,针对外部文件的同步,需要人工操作
菜单命令:"File/Tangle.../Tangle" - 混出
菜单命令:"File/Untangle.../Untangle" - 混入
- 是一对相应的操作
- Tangle 是将当前的编辑混出到外部文件中
- Untangle 反之
@silent
比@file, 好象@root的内容管理麻烦些
但是有一点好处是可以声明 @silent
- 命令Leo 在同步文件时,不向外部文件输出 Leo 的注释文本,生成干净的代码文件
- 如果是团队开发,最好用@thin,另外还有比@silent更方便的命令。和@thin的文档在一起。by tomz
什么东西?研究之
- 快速翻译来学习使用
@thin
大多数情况中 @thin 如同 @file 一样的工作. 实际上,你可以简单的将 @file 替换为 @thin 进行正常的 outline 操作.
这里是主要几点 @file 与 @thin 不同之处:
- Leo 不会在 .leo 文件的 @thin 节点树中保存信息
- 源自 @thin 的文件 (可以称作 "轻依赖"文件) 是从文件的outline 信息重建 @thin 树的. 具体的就是利用文本中 @+node 和 @-node 作为独特的标识节点
- . @all 指示符仅仅在 @thin 树中起作用. 此指示符与 @others 类似, 不过对其有些限制:
- 它将倒出所有标记以內的节点到文件中,包括标记为 @ignore 和 @others 以下的树会当作普通的孤立节点倒出. (不妙的体验是,原先 @others 可以限定下属节点倒出文本时的缩进,而@all 粗暴的将所有下级节点当作同级的兄弟处理了!)
对于类似 LeoPy.leo 中的 @thin leoProjects.txt 文件,@all 指示符 是必须的. leoProjects.txt 文件包含所谓"工程节点" . 即,非程序文件:仅仅是些无关数据的简单收集.这时,@others 决不会工作: Leo 会抱怨有太多的 孤节点
- 使用@thin 最有利的是,人们进行协同开发时不用频繁的同步 .leo 文件!
- 开发者仅仅需要检入 "轻依赖"文件 到 CVS.
- CVS仓库 "参考" .leo 文件. 实际所有相关文件除了 @thin 节点信息什么也没有包含.
- 参考文件 当且仅当 工程中有新文件加入时才会变化.
- 开发者们只使用本地的 参考文件 复制就可以开展自个儿的工作.
比如说, 代替直接使用 LeoPyRef.leo , 我利用叫 LeoPy.leo 的复制品. 通过 @thin 节点指引所有本地工作文件.
@root vs. @file 树
@file 树比 @root 树使用起来方便很多:
- @file 树需要的指示符支持比 @root 树要少; 所有 @root 树中的章节都需要声明(而且不能重名,在同一文件中!), 而 @file 树常常包含很多非命名的章节节点. 在 @file 树中, @others 指示符 行为就象关联起所有非常命名的章节.
- 工作在 @root 树中,用户必须明确调用 Tangle 和 Untangle 命令. 而 Leo 会自动混入/出 @file 树 , 保存时混出所有变动到 outline, 重新打开 .loe 文件时自动混入所有修改从 outline.
但是, @root 树比 @file 树要 柔韧很多:
- 在 @file 树中, 章节必须是包含在子节点中的,而且引用点也是固定的.
- 在 @root 树中一个被声明的章节, 并不限制其可以在哪里被引用. 此外,@unit 指示符命令甚至于扩展了章节的引用, 可以不限制在一个 @root 树中! 即,你可以在一个 @root 中命名一个章节, 而在另一个 @root 树中引用(可以看作 节点的 clone 操作,只是在引用处看不到全部内容,除非混出为文件)
- 在 @root 中的章节声明,也不限制声明的地点.
@root 树与 @file 树不同之处在于:
只有 @root 树可以包含章节定义行(不过 @file 中可以使用 "<< class declarations >>"类声明的专用章节)
- 只有 @file 树可以包含 @others 指示符.
- @c 指示符 需要章节名出现在 @root 的节点标题树中.
- @c 指示符仅仅可以工作在 @file 树的体文本起始处.所谓 体文本是在 @root 中没有标记会被忽略,而在 @file 树是作为无命名的代码章节内容处理的节点正文文本.
更多节点控制
还是我找资料贴出来吧。是和@file相关的,不是和@root相关的。 by tomz
嗬嗬 是也乎 Leo 随发行版,附带了 LeoDocs.leo (1mb)等等文档,含有极丰富的内容 呜乎哀哉 一定要好好看哪
Users Guide-->Chapter 4: Writing Programs in Leo-->Appendix 1 to Chapter 4: Using @asis, @noref and @nosent trees
- 有一表格
节点树类型 |
生成文件是否含结构标记注释? |
章节或是@others 支持? |
@file |
yes |
yes |
@nosent |
no |
yes |
@noref |
yes |
no |
@asis |
no |
no |
- 经体验, 可以简单的使用 @nosent 替换 @root ,可以象 @file 一样的使用,却又没有Python格式的注释的结构信息
- 而且,@others 章节声明也可以很好的混同使用
只是不能象 @root 那样在正文中使用@root expfile.t2t 模式的声明,而必须在 outline 树节点中显要的指明
如此就可以使用 Leo 方便的管理,编辑不支持 # 为注释的各种语言文件了
- 嗯嗯 ? 只是可惜的是这样一来,所有代码只能安全的存储在 .leo 文件中,生成的代码文件是干净了,但是团队开发时,就要反复同步 .leo 文件,否则,难以快速把握哪些文件受到修改了…………
反馈
Leo 安装
- leo是运行在py2.4还是py2.3.4?我机器2个版本py都有,可是在安装leo的时候提示我没有安装py,不晓得怎么回事 --Dreamingk
哈哈哈!!是个奇怪的问题!Leo 在 4.0 以后版本的安装程序好象有问题,不论Python 环境是少,都说是找不到,也可能是M$升级了什么东西后注册表结构变了,才这样的,我是都下载跨平台版本,解压就可以使用的,自个儿创建一个快捷方式!绝对的“绿色!”--ZoomQuiet
- 下了他的src版,就可以用了。exe版就不行。 --Dreamingk
- 它的exe版可能是dephi编的,比较过时,可能早不能用了。by tomz
- 它现在已经没有exe版了,sf上的exe是安装包,安装后还是py文件。很好用,装了就能用。 --by flyaflya
在Debian(3.1.testing)下安装Leo,默认安装python为2.3.5版,后来我安装了python2.4.2.并且安装了python2.4-tk.下载Leo..无法运行..提示:
Traceback (most recent call last): File "/usr/local/lib/leo/src/leo.py", line 312, in ? run(fileName) File "/usr/local/lib/leo/src/leo.py", line 75, in run g.app.setLeoID(verbose=verbose) # Force the user to set g.app.leoID. File "/usr/local/leo-4-3-3/src/leoApp.py", line 448, in setLeoID g.app.createTkGui("startup") File "/usr/local/leo-4-3-3/src/leoApp.py", line 227, in createTkGui import leoTkinterGui # Do this import after app module is fully imported. File "/usr/local/leo-4-3-3/src/leoTkinterGui.py", line 16, in ? import leoTkinterComparePanel File "/usr/local/leo-4-3-3/src/leoTkinterComparePanel.py", line 11, in ? import leoTkinterDialog File "/usr/local/leo-4-3-3/src/leoTkinterDialog.py", line 9, in ? import Tkinter as Tk ImportError: No module named Tkinter
... ... 什么东东?我没安tk??不对呀!!明明安了呀!!看看..
gawain:/usr/local/leo-4-3-3/src# python #这个时候我按下tab键... ...好像还有东东 python python2.3 python2.4 gawain:~# python -V Python 2.3.5 #哎呀!!!居然是2.3.5...那我安的python2.4-tk岂不是成了驴唇.非也非也~~~ gawain:~# python2.4 /usr/local/leo-4-3-3/src/leo.py Traceback (most recent call last): File "/usr/local/leo-4-3-3/src/leo.py", line 314, in ? run() File "/usr/local/leo-4-3-3/src/leo.py", line 75, in run g.app.setLeoID(verbose=verbose) # Force the user to set g.app.leoID. File "/usr/local/leo-4-3-3/src/leoApp.py", line 448, in setLeoID g.app.createTkGui("startup") File "/usr/local/leo-4-3-3/src/leoApp.py", line 230, in createTkGui g.app.root = g.app.gui.createRootWindow() File "/usr/local/leo-4-3-3/src/leoTkinterGui.py", line 78, in createRootWindow self.root = root = Tk.Tk() File "/usr/lib/python2.4/lib-tk/Tkinter.py", line 1569, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable #terminal, 还是到X下运行的好. #cd /path/to/leo #chmod +x install #./install #apt-get install python-tk #leo #这条是要到X下执行哦~~~否则是会产生原子的... ... 多了可就会生成原子弹了.
缺陷
- 以@file方式导入文件,缩进可能出现问题,它把一些地方的Tab换成4个空格,有些地方没换,可能出现问题,在使用其它编辑器(我用editplus)时,可以选中“Tab用空格代替”。-- by flyaflya
- 在Unix/Linux系统里,tck/tk的中文输入始终是个问题。所以,连带Leo在我的Debian里也没法输入中文,实在是可惜。-- xyb
技巧
体验
解决Ubuntu 下面Tk中文字体问题
Bind Tk8.5 在Ubuntu中给Py
又和 Tk8.4 绑在一起,所以在 Leo 中只能使用部分字体(主要不能使用支持边缘平滑的字体) 经过在 leo-editor 讨论组中搜索,发现了一篇相关讨论提到可以通过重新编译 Python 来实现 Tkinter 和 Tk8.5 的讨论,试验了一下果然可以,现把体验记载如下,以供喜欢Leo的朋友参考
- 处置
- 1.安装 tk8.5
sudo apt-get install tk8.5 tk8.5-dev
- 2.安装完成之后,如果在idle中:
将会看到的依然是8.4
因为 ubuntu 的 Tkinter 模块和 tk8.4 进行了捆绑,必须对 python 进行重新编译才可
- 3. 编译 Python
从 Python 官方网站下载 python 源代码
依次进行:
./configure --prefix=/usr --enable-unicode=ucs4 make sudo make install
然后是
cd /usr/bin sudo rm python sudo ln -s python2.5 python
- 4.之后就可以启动 LEO, 应该立刻可以看到字体变化了,如果设置使用系统默认字体的话
还可以从菜单 Cmds -> Picklers -> Show-Fonts 的对话框中看到所有支持边缘平滑的字体了
当然如果再print Tkinter.TclVersion看到的就是8.5了
有什么疑问到 CPyUG(邮件列表 http://groups-beta.google.com/group/python-cn) 交流吧
- 反馈
- 确认!
遗留问题 常常有这样的问题:
Error: 4 TypeError Exception in Tk callback Function: <function masterMenuCallback at 0x90be0d4> (type: <type 'function'>) Args: () Traceback (innermost last): File "/opt/bin/leo-4.4.3a2/extensions/Pmw/Pmw_1_2/lib/PmwBase.py", line 1752, in __call__ return apply(self.func, args) File "/opt/bin/leo-4.4.3a2/src/leoMenu.py", line 1303, in masterMenuCallback return k.masterMenuHandler(stroke,command,commandName) File "/opt/bin/leo-4.4.3a2/src/leoKeys.py", line 3171, in masterMenuHandler return k.masterCommand(event,func,stroke,commandName) File "/opt/bin/leo-4.4.3a2/src/leoKeys.py", line 2262, in masterCommand c.frame.updateStatusLine() File "/opt/bin/leo-4.4.3a2/src/leoFrame.py", line 1326, in updateStatusLine self.statusLine and self.statusLine.update() File "/opt/bin/leo-4.4.3a2/src/leoTkinterFrame.py", line 738, in update s2 = s[index-col:index] TypeError: unsupported operand type(s) for -: '_tkinter.Tcl_Obj' and 'int'
- 升级!一切就好了!
- 进一步
瞒天过海:
Jiahua Huang <[email protected]> reply-to [email protected] to "Python.cn@google" <[email protected]> date Thu, Oct 30, 2008 at 22:14 subject [CPyUG:69942] 简单让 python-tk(如 IDLE)使用
- Tk8.5 和 Tk8.4 的 API 改动并不大,所以其实可以瞒天过海用 Tk8.5 直接代替 Tk8.4 而不需要重新编译任何东西。
可以在终端窗口粘贴执行下边命令
# 安装 Tk8.5 sudo apt-get install tk8.5 tcl8.5 # 先备份吧 sudo cp /usr/lib/libtcl8.4.so.0 /usr/lib/libtcl8.4.so.0.old sudo cp /usr/lib/libtk8.4.so.0 /usr/lib/libtk8.4.so.0.old sudo cp /usr/lib/python2.5/lib-dynload/_tkinter.so /usr/lib/python2.5/lib-dynload/_tkinter.so.old # 再用 Tk8.5 覆盖 Tk8.4 sudo cp /usr/bin/tclsh8.5 /usr/bin/tclsh8.4 sudo cp /usr/bin/wish8.5 /usr/bin/wish8.4 sudo cp /usr/lib/libtcl8.5.so.0 /usr/lib/libtcl8.4.so.0 sudo cp /usr/lib/libtk8.5.so.0 /usr/lib/libtk8.4.so.0 # 篡改 "Tk8.4" 的版本号 sudo sed -i 's/8\.5/8.4/g' /usr/lib/libtk8.4.so.0 sudo sed -i 's/8\.5/8.4/g' /usr/lib/libtcl8.4.so.0
得了您咹!齐活儿!