纯python gui库?

gri*_*yvp 6 python pyobjc pygtk tkinter pyqt

Python有很多GUI库:tkinter,wxWidgets,pyGTK等.但是所有这些GUI都需要安装并且非常重量级,因此部署最终用户GUI python应用程序会在提到的GUI库上进行中继时有点复杂.

最近,我考虑过python的内置ctypes模块.从理论上讲,可以创建一个纯的python GUI库,用于ctypesWindows(windll.user32.CreateWindowEx等),MacOS上的原生pyObjC和gnome/kde上的pyGTK/pyQt.这样的图书馆存在吗?如果没有,你认为这个想法有什么问题?

Cor*_*erg 11

从Python 2.7和3.1开始,Tk看起来会好很多.

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

"Tcl/Tk 8.5包含一组主题小部件,它们重新实现了基本的Tk小部件,但具有更可定制的外观,因此可以更接近本机平台的小部件.这个小部件集最初称为Tile,但是被重命名为Ttk(用于"主题Tk")被添加到Tcl/Tck 8.5版本中."


Cra*_*een 10

最省力和最佳结果的途径是学习使用现有GUI库部署应用程序所需的内容.


Sin*_*ion 8

Tkinter是python标准发行版的一部分,默认安装.期望在所有首先有图形显示的python安装上找到它.

  • "ui丑陋"的评论大多只适用于旧版本的Tkinter.Modern Tk在支持它的平台上使用本机小部件.如今丑陋的Tkinter应用程序主要反映了程序员的才能,而不是工具包的限制.有关该讨论的更多信息,请参阅http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-ugly (6认同)
  • 可能python选择Tk的原因是当时没有其他成熟的跨平台工具包。Tk 可以追溯到 1990 年 (http://www.tcl.tk/about/history.html),比任何合理的替代方案可用的许多年。与其他早期工具包不同的是,它旨在嵌入解释语言中使用,因此将其移植到 python 比绑定另一个面向 C 的工具包要容易得多。 (2认同)

Anu*_*yal 6

"纯python gui库"的概念是错误的,因为最终你将使用系统级调用和小部件,可能是通过ctypes,但这并没有改变这样一个事实:如果你开始实现你的想法,你最终将成为wxPython


Con*_*lls 5

主要是错误的是它重新发明了GTK,Tk,Wx,QT及其同类制造商已经完成的车轮.虽然纯python GUI在技术上是可行的,而诸如anygui之类的项目确实尝试了类似的东西,但这样做的收益相对较少.

本机工具包还可以更好地覆盖底层平台之间的差异(本机对话框等).这意味着工具包允许您编写一个可移植的应用程序,该应用程序几乎不需要任何特定于平台的代码 - 其中大部分都是由底层工具包抽象出来的.

Windows上的py2exe和任何linux方法之类的分发机制允许您将DLL与应用程序捆绑在一起,因此您可以创建一个安装程序,删除它所需的任何本机组件.但是,实际上没有通用的跨平台方法,因此您需要为每个平台维护单独的安装程序.