1
xhacker 2012-01-14 22:28:11 +08:00
PySide
|
2
tokki 2012-01-14 22:35:06 +08:00
python 要什么gui阿-。- gui果断obj-c去
|
3
ultragtx 2012-01-14 22:50:02 +08:00
QT咋样 不过我也没用过
|
4
ectotherm OP @tokki 因为写了一个本机的search engine,用web.py做界面,后台还要运行一个daemon,太痛苦了。所以想写成gui,又不想用python之外的东西重写。之前用tkinter在windows上是好好的,但lion上不能输入中文,硬伤。
|
5
ectotherm OP |
6
ectotherm OP @tokki 对了最主要的问题是:如果我那天我另外写了几个app,如果每个在后台都运行一个daemon,占内存不说,没事还给我抽两下
|
8
ectotherm OP @dndx 因为写了一个本机的search engine,用web.py做界面,后台还要运行一个daemon,太痛苦了。所以想写成gui,又不想用python之外的东西重写。之前用tkinter在windows上是好好的,但lion上不能输入中文,硬伤。对了最主要的问题是:如果我那天我另外写了几个app,如果每个在后台都运行一个daemon,占内存不说,没事还给我抽两下
|
9
for4 2012-01-14 23:31:23 +08:00
lz说过的几个都考虑过 最终选的wxpy 配合wxFormBuilder 还不错
|
10
ectotherm OP @for4 关键在lion上安装wx 2.9.3的非常痛苦,要自己下载源码来编译,本来开发工作的重头应该在search engine本身的效率逻辑上,所以我不想花太多精力在gui上。其实tkinter我用的是很爽了,就是在lion上不能输中文。tkinter的开发方式完全符合我的要求。有没有人写个像wxtkinter之类的东西
|
11
gDD 2012-01-14 23:37:48 +08:00
大家都没提到PyGTK。。。
|
12
HowardMei 2012-01-14 23:40:38 +08:00
|
16
gDD 2012-01-15 14:04:37 +08:00 via iPod
|
17
ectotherm OP @gDD 我知道通过下载源码编译可以,但是通过brew需要gcc,这跟我直接下载wxpython的代码来编译没什么区别,我要的就是最简便的方案。
下载源代码编译的方案看起来可行,但是我手头有3台mac,这样做起来就太麻烦了。所以最好有一个方案全部搞定的,tkinter就是这样的方案,问题我需要处理中文。 |
18
est 2012-01-15 14:54:17 +08:00
PyGUI不需要pip啊,纯.py文件,调用很方便的。
|
20
HowardMei 2012-01-15 15:54:57 +08:00
@ectotherm 呵呵,你被它名字弄迷糊了吧,我刚开始也是,直到看到这个:
http://fcamel-life.blogspot.com/2011/09/pythonwebkit.html 名字里有GTK未必就直接依赖于GTK,难道就不能自带干粮?官方文档里: The GTK+ port of WebKit is intended to provide a browser component for the portable GTK+ UI toolkit. WebKitGTK+ is developed within the official WebKit SVN, so the codebase is unrelated to the classic GTK+ WebCore, but WebKitGTK+ has superseded Gtk+ WebCore. The WebKit Buildbot provides continuous build and layout tests. unrelated有木有?所以,它是被独立出来,放在webkit里面的,在MacOS上build方法和Linux一样简单: https://trac.webkit.org/wiki/BuildingGtk 很久以前bookmark的一个列表,看能不能让你偷到懒 :-) case 1:http://www.gnu.org/software/pythonwebkit/ http://www.notedit.com/2010/11/python-webkit-dom-bindings/ case 2:Titanium Desktop SDKs Community Edition: http://www.slideshare.net/jhaynie/desktop-applications-using-html-and-javascript http://www.appcelerator.com/products/plans-pricing/ case 3:PyjamasDesktop(PyWebkitGtk): provides a simpler and more powerful alternative to python-wxWidgets, PyGtk2 and PyQt4. http://pyjd.org/ case 4:http://code.google.com/p/onering-desktop/ case5:http://code.google.com/p/phantomjs/ https://github.com/Roejames12/phantomjs (pyphantomjs) case6: http://awesomium.com/ 这些大部分都用webkit做UI render,可以自己加上bottle.py做ajax backend,以求在普通性能需求下用html+css搞定大部分界面互动。 不过这都是走黄老邪的路子,远不如 QT/wxPython 来得成熟,也不如tkinter完整,所以不见得能节省时间。 |
21
ectotherm OP @HowardMei 哦,看晕了,我还指望直接pip install pywebkitgtk完事了,看来是不行。算了,坚守tkinter,然后想办法搞个wxtkinter吧,gui实在太花我的时间了
|
22
harmy 2012-01-15 16:49:46 +08:00
你可以去看看kivy能否满足需求
http://kivy.org/ |
24
ectotherm OP 刨去中文输入的问题,Tkinter真的是一个非常方便的框架。开发完全符合Pythonic的精神。
|
25
ant_sz 2012-01-15 20:54:20 +08:00
pyQT?
|
26
loading 2012-01-15 21:01:45 +08:00 via Android
其实我是看到python能网络开发又能gui开发才选的,现在发现gui开发是如此纠结=_=
|
27
skywinger 2012-01-15 21:16:19 +08:00
干嘛都不喜欢用java呢?java的gui是真正的跨平台通行的一个非常好的方案。
|
29
ectotherm OP @ant_sz @ant_sz @skywinger @loading 用过C++开发qt和wx,就知道有多痛苦了。Python的优点不在于网络或者是什么特别的方面。而是在于它作为原型语言的优势,这点目前只有java能与之媲美。但是java信奉的是自上而下的类型模型(什么东西都是object,然后继承、实现下来),而Python具有duck type的特性,所以在大量面向对象开发的过程中,Python的继承层次非常浅,而且内置了和Ruby的mixins相当的多重继承特性,抽象层次高非常多。
我从95年开始搞C++开发,到05年全线换成Python,倒不是因为我觉得Python能做比C++更多的事情,而是因为用它开发实在高效(不是它运行高效),用来思考复杂的问题非常容易。 另外拿qt和python比是不恰当的,当然我知道qt和wx包含完整的、各种功能的类型、操作等等。不过C++致命的问题就是没有很好的统一性,打个比方说:我接触过n个C++库,就有n中表示字符串的类型。std::string、Ogre::String(typedef std::string)、CEGUI::String、QString、wxString等等。 之前用wxWidgets做了两个C++项目,还有wxPython写了一个完整的编辑器项目。因为太熟悉了,所以我知道wxPython本身的复杂性。前阵子用Tkinter开发了几个项目,让我有醍醐灌顶的感觉:这才是我需要的GUI库。我原来以为所谓的RAD需要有一个GUI Builder之类的东西。Tkinter让我用区区几行代码搞定任何复杂的问题。 当然我是说在Windows上的Tkinter,在我的OS X上,Tkinter就没正常支持过中文输入。前阵子自己写了个wxTkinter,最后放弃这个项目,原因很简单:我不想让开发GUI的时间大于我做其他工作的时间。 |
30
ant_sz 2012-01-15 22:38:36 +08:00
@ectotherm (话说跑题了233)
Python也是我的首选编程语言,不用说太多话去描述他,仅仅是 :Simple, Sometimes native! 我还是挺喜欢Qt的,至少在编译成机器码的这些GUI里面,这个我用起来最顺手。毕竟有时候是有硬件密集型的需求的。Qt原生支持的OpenGL(商业版还支持D3D)这个挺好。Qt是一个很成熟很完善的框架,且都是对原生API的封装,而不是建立自己的图形层。 至于Java,不是我黑他,GUI方面他就是一悲剧,效率实在太低。开发效率也一般,也不喜欢繁文缛节的包名称和函数名称(庞大的库里很多函数恨不得用函数名把这个函数描述一遍,这个受不了,再加上不喜欢用IDE,没啥代码提示的情况下)。反正个人是不喜欢Java,虽然他是我第一门系统学习的编程语言 |
32
ant_sz 2012-01-16 05:46:09 +08:00
@loading 其实纯Qt也可以啊,Qt不光是图形库,他还包含了从XML解析器到Webkit的全套lib,包括Networking,加上C++写出来,效率还是不错的。另外,Qt对C++做了一些扩展,可以实现for in这样比较方便的语法。
如果需要一些没有被包含的API,就混杂ObjectiveC进去混合编译咯,是可以做到的。Qt本身就是一种Native的封装。 不过比较纠结的就是Qt毕竟就没有Python这类脚本语言高开发效率。 |
33
est 2012-01-16 09:17:46 +08:00
|
34
skywinger 2012-01-16 09:36:44 +08:00
|
36
laiwei 2012-01-16 09:50:58 +08:00
还是 继续用 wxpython吧
|
37
ectotherm OP @laiwei 我是这样打算的,用Tkinter开发,一方面试图解决不能输入中文的问题,另外一方面继续着手开发wxTkinter吧,实在找不到一个比Tkinter还简便的库了
|
38
bhuztez 2012-01-16 10:33:39 +08:00
@ectotherm Coccinella就是用Tcl/Tk写的,上次我用的时候,没觉得输入中文有问题 http://coccinella.im/
|
40
ectotherm OP @skywinger 突然想起一个事情来,网上一篇谈论为什么android的界面没有ios流畅的分析,你可以参考下。我搞了两年多的cocoa开发了,在这之前从来没有一个gui framework会把特效的功能默认加入到界面设计当中。
|
41
ant_sz 2012-01-16 20:00:25 +08:00
@skywinger Android的GUI系统是谷歌自己虚拟机提供的,不是SUN(或者说现在的甲骨文的JVM),不是标准Java框架的一部分,应该独立出来称为dalvik,谷歌仅仅是使用Java作为开发语言而已。其实我应该说的准确点,Java默认自带的SWING图形框架挺扯的。
举个例子,Eclipse打开的时候,连加载提示页面都得好几秒才能弹出、、、SWING就是个悲剧。当初学习Java的这个部分,写的Hello World弹出都相当慢。 至于J2ME 这类在手机上运行的Java,他的图形库是比较轻量级的。效率尚在可以接受的范围内,但是相比Android乃至其他的图形框架还是差的多。 iOS上的图形系统和MacOSX上还是有些不同的,iOS上的所有UI都默认强制OpenGL渲染,MacOSX上则还是允许CPU渲染的。所以iOS更流畅一点也还是就容易理解了。 本人对Android的图形渲染还是比较认可的。之所有有时候会感觉略卡。我觉得还有大部分安卓机默认的触摸操作采样效率都比较低等其他一些原因。 |
43
ectotherm OP 还有一个选择:jython
|