python tcl 控件_在Tkinter.Tcl()中使用Python函数
>我有一堆Python函数.我们称他们为foo,bar和baz.它们接受可变数量的字符串参数,并执行其他复杂的操作(如访问网络).
>我希望“用户”(让我们假设他只熟悉Tcl)使用这些函数在Tcl中编写脚本.
以下是用户可以提出的示例(取自Macports):
post-configure {
if {[variant_isset universal]} {
set conflags ""
foreach arch ${configure.universal_archs} {
if {${arch} == "i386"} {append conflags "x86 "} else {
if {${arch} == "ppc64"} {append conflags "ppc_64 "} else {
append conflags ${arch} " "
}
}
}
set profiles [exec find ${worksrcpath} -name "*.pro"]
foreach profile ${profiles} {
reinplace -E "s|^(CONFIG\[ \\t].*)|\\1 ${conflags}|" ${profile}
# Cures an isolated case
system "cd ${worksrcpath}/designer && \
${qt_dir}/bin/qmake -spec ${qt_dir}/mkspecs/macx-g++ -macx \
-o Makefile python.pro"
}
}
}
这里,variant_issset,reinplace等(除了Tcl builtins)实现为Python函数. if,foreach,set等等是正常的Tcl结构. post-configure是一个Python函数,它接受一个Tcl代码块,以后可以执行(反过来显然最终会调用上面提到的Python“函数”).
这可以用Python做吗?如果是这样,怎么样?
来自Tkinter进口*; root = Tk(); root.tk.eval(‘puts [array get tcl_platform]’)是我所知道的唯一集成,显然非常有限(更不用说它在mac上启动X11服务器的事实).
解决方法:
通过一些实验,我发现你可以做这样的事情来创建一个tcl解释器,注册一个python命令,并从Tcl调用它:
import Tkinter
# create the tcl interpreter
tcl = Tkinter.Tcl()
# define a python function
def pycommand(*args):
print "pycommand args:", ", ".join(args)
# register it as a tcl command:
tcl_command_name = "pycommand"
python_function = pycommand
cmd = tcl.createcommand(tcl_command_name, python_function)
# call it, and print the results:
result = tcl.eval("pycommand one two three")
print "tcl result:", result
当我运行上面的代码时,我得到:
$python2.5 /tmp/example.py
pycommand args: one, two, three
tcl result: None
标签:python,dsl,tcl,integration
来源: https://codeday.me/bug/20190827/1740920.html
python tcl 控件_在Tkinter.Tcl()中使用Python函数相关推荐
- dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件
DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一 ...
- 让一个图片填满一个控件_如何在Android中实现一个全景图控件(二)
一.背景 在 如何在Android中实现一个全景图控件(一)中,介绍了项目的一些基本情况(有 demo 演示),如果项目对你有帮助,希望文章赏个赞,项目 star 一下. 项目地址:https://g ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- python开发grasshopper插件_在Rhino/Grasshopper中使用Python
一些基本的信息可以在官方网站(http://wiki.mcneel.com/developer/python)找到. 让人遗憾的是,目前还没有方便有效的方法可以在Rhino/Grasshopper中使 ...
- python 运行r语言_如何在R中运行Python
python 运行r语言 尽管我很喜欢R,但很显然Python还是一种很棒的语言-既适用于数据科学又适用于通用计算. R用户想要在Python中做一些事情可能有充分的理由. 也许这是一个很棒的库,还没 ...
- python tcl 控件_在Python中解析TCL列表
我需要在双括号上拆分以空格分隔的TCL列表-例如-- OUTPUT = """{{172.25.50.10:01:01-Ethernet 172.25.50.10:01: ...
- python大于等于怎么表示_如何在rejectdb中应用python lambda表达式中的大于等于
我在reinstdb表中有下面的json记录.在[{ "pid": 12, "sk": [ { "sid": 30, "et&qu ...
- python 调用rpc服务_在Django项目中对Python函数进行RPC调用的优雅方式
我正在尝试创建一个django网站来访问MySQL数据库中的数据.其目的是在Dojo(javascript)中创建一个UI.另外,我希望django后端也提供webservices(RPC for p ...
- python 苹果手机自动重启_在*nix系统中的python中自动重启守护进程
Joseph Victo.. 5 如果你在Ubuntu上,我建议你看看暴发户.这样做比inittab但实际上涉及一些学习曲线更好. 编辑(布莱尔):这是我最近为自己的一个程序编写的新手脚本的改编示例. ...
最新文章
- sysstat.3.bat
- linux ftp登录命令_Linux使用pinky命令查询登录用户信息
- linux 更改mysql的数据库目录
- 享元模式-Flyweight(Java实现)
- 安装Debian-9(Stretch)服务器图文教程
- ROS笔记(28) Setup Assistant
- IIS7.5(IIS7)配置伪静态urlrewrite
- 数据清洗Chap6——数据统计
- Wpf 初学---01设计一个优美的注册界面
- webgl 地球_使用WebGL和JavaScript构建地球
- java中直线距离的计算_java计算两点间的距离方法总结
- Odoo 8.0深入浅出开发教程
- 解决冲突后,git merge --continue 时 lint不通过
- python爬取动态页面图片_python动态网页爬取:爬取pexel上的图片
- parameter缩略语_常用参数缩写
- CODE[VS]1024 一塔湖图
- Vue SSR 从入门到 Case Study
- ku115上实现adc12dj3200 配置,jesd204b接口,单通道采集模式
- 面向对象(OOP)与面向对象设计(OOD)
- Linux操作系统下C语言网络编程(全文23475字,包含了Linux系统下所有网络编程的知识点,附程序代码)