GUI:wxPython与Tkinter(以及其他)

我正在寻找GUI库的一些输入. 我想建立一个 Python驱动的GUI,但并不是很了解比赛场. 我通常听说过关于wxpython的好消息. 我碰巧已经拥有 约翰·格雷森(John Grayson)关于TKINTER编程的书,所以如果我 决定使用TKINTER. 我做的事情比 Tkinter中的" Hello World" - 我从未使用过WXPYTHON. 因此,基本上 我想照明的要点是: o wxpython提供什么功能,tkinter不能(和恶习 versa)? o是一般的编程方法学几乎相同 这两个(例如,通用程序结构 - 使用回调和帧, 等等,是相同的,这只是一个问题的问题 他们自己的论点)? 哦,您对一个人有强烈的偏爱(或其他人) 工具包)? 为什么? o我应该知道有任何平台和/或性能问题吗? o是动画,图形特别适合于 其他? o我应该知道的其他重要对比/相似性? 所以...我知道这个问题必须经常出现. 我确实搜索了 对于我目前具有可见性的文章的" wxpython"和" tkinter" 在WXPYTHON中看到了一个错误,没有关于TKINTER的错误. 任何事物 除了可以促进对两者的"鸟类视野"的理解(或 其他)工具包将不胜感激. 感谢您抽出宝贵的时间阅读我的帖子. 真挚地, -ej

# 回答1

" Erik Johnson" 写道: 我从未尝试过在TKINTER中进行动画. QT提供计时器设备 您可以用来驱动动画. 我怀疑在 TKINTER明显更加困难. <迈克 - - Mike Meyer http://www.mired.org/home/mwm/ 独立www/perforce/freebsd/unix顾问,电子邮件以获取更多信息.
# 回答2

Mike Meyer 写道: tkinter支持某种运行n毫秒的事件(n是一个 参数)调用该方法后. 您可以使用它来创建一个 正时循环. 如果您 想要在与其余部分的单独线程中运行tkinter GUI 你的申请. tkinter不是线程安全,所以你必须做 诸如定期从TKINTER线程检查队列之类的东西.
# 回答3

迈克·迈耶(Mike Meyer)写道:不是QT. 它具有插槽和信号的概念. 您将信号从对象连接到另一个(或同一)对象上的插槽或信号. 例如,您可以将信号从滑块小部件连接到数字显示器上的插槽,从而使显示器在移动滑块时会更改. 在Python级别,插槽只是可呼叫的对象. 在C ++级别,插槽是对象的魔法方法. 信号通常与GUI事件相关联,但是Python可以出于任何原因散发它们. 可以将C ++信号连接到Python中的C ++插槽/信号,这意味着Python赢了' 当该信号发射时涉及. 如果您没有Python,那当然是一个很好的论据. (即使Python的速度比C ++慢,也比用户快得多). 如果要将事件源(信号)绑定到一行中的插槽(方法), 使用lambda. 如果您需要添加更多行为(通常这样做),请使用 功能. PYQT提供了更高水平的抽象. 什么? 当然,C ++加上低级UI API. 但是tkinter+python? wxpython+Python? 你开玩笑的吧. (或者您是从Trolltech的营销材料中借用的;我注意到 一词"较高的抽象水平"是QT粉丝中非常受欢迎的,但是 Trolltech本身只有在谈论低级时才使用它 X/XT/主题和本地Win32 API等库) 我从未尝试过在TKINTER中进行动画. QT提供了可以用来驱动动画的计时器设备. 我怀疑在TKINTER中做同样的事情会明显困难. 嗯? 您不知道如何在Python中进行循环? 还是注册回调? wxpython同时包含计时器和低级图形API; 对于tkinter, 您是"后"设施和画布; 如果您需要低级图纸 使用更紧密的Python间断,使用WCK. (对于更高级的绘图,我建议使用OpenGL,可以使用 为他们所有人)
# 回答4

弗雷德里克·伦德(Fredrik Lundh)写道:如果Python还没有线程设备,以及与所有主要参与者实施的数据库交谈,那当然是一个很好的论据. 在GUI编程中,Python线程并不完美 - 您 必须实现您自己的通知机制(例如,使用队列 民意调查),通常您只能从MAIN与GUI进行交流 应用程序的线程. QT也是如此 实例具有将事件发布到任何任意QT对象的能力,因此 使生活更轻松. 无论如何,上述所有工具包都有其自己的利弊, 在大多数情况下,选择是个人品味的问题. - - Jarek Zgoda http://jpa.berlios.de/ | http://www.zgodowie.org/
# 回答5

Jarek Zgoda写道:如果Python还没有线程设备,以及与所有主要参与者实施的数据库交谈,那当然是一个很好的论据. 在GUI编程中,Python线程并不是完美的 - 您必须实现自己的通知机制(例如,使用队列调查),因为通常您只能从Main Application的线程与GUI进行通信. 与wxpython一起,事后(这也是Callafter也使用的)是 线程安全,可以从任何线程中使用,使您能够 (至少在这个方向上)与GUI线程进行交流 从任何常规的python线程. 不需要特殊线程 由框架提供,实际上,即使 (构建WXPYTHON)提供了一个WXThread类, 在WXPYTHON中没有暴露,因为它是多余的. -peter
# 回答6

" fredrik lundh" 写道:除了巫师真的不是很棒的事实(请阅读库珀),如果您的工具箱不允许您与几个按钮进行对话 而且是一个可交换的框架,这不是一个很好的工具包. (在TKINTER和WXPYTHON中,这都很容易.如果您环顾四周,您可能可以在网上找到现成的模块) 虽然我不是巫师的忠实拥护者,但对于某些应用程序,它们是 只是票,当您走下一棵选择树时. 呈现 用户每个节点上的选项正是要走的方式. 当然,它 在TKINTER中滚动可能很容易,但是在PYQT中,您不必这样做. 如果您没有Python,那当然是一个很好的论据. (即使Python的速度比C ++慢,也比用户快得多). 能够让C ++代码全部处理它仍然很高兴. 后 所有人,让编译层为您做的事情就是这样做的 快速Python代码. 什么? 当然,C ++加上低级UI API. 但是tkinter+python? wxpython+Python? 你开玩笑的吧. 不,我不是在开玩笑. 我说的是我的一般印象 使用TKINTER和PYQT完成编程. 注意,那是 *py *qt,不是 QT. 嗯? 您不知道如何在Python中进行循环? 还是注册回调? wxpython同时包含计时器和低级图形API; 对于Tkinter,您是"后"设施和画布; 如果您需要更紧密的Python Intergration的低级图纸,请使用WCK. 当然,您可以与睡眠一起滚动循环并进行动画. 你 可以插入线和队列,以便您可以保持GUI活跃 你在做. 使用QT,您将计时器的信号联系到 对象移动功能,您就完成了. 因为您必须使用 线程版本以获得相同的功能,我会说明显更多 困难不是夸大其词. <迈克 - - Mike Meyer http://www.mired.org/home/mwm/ 独立www/perforce/freebsd/unix顾问,电子邮件以获取更多信息.
# 回答7

嗨,我在使用输入服务器时对TKINTER的经验非常糟糕(用于 linux上的cjk语言,例如scim,xcin ...) 考虑一下.
# 回答8

inthy@klubko.net写道: 嗯? 我使用(不经常承认...)Kinput2与Canna和WNN服务器一起使用 tkinter on Linux上的工作非常顺利. 你能描述发生了什么吗 你到底吗? - - - 埃里克·布鲁内尔(Eric Brunel pragmadev:实时软件开发工具-http://www.pragmadev.com

标签: python

添加新评论