2011-11-05 79 views
3

我已经看过python - Pygtk VS Pyqt VS WxPython VS Tkinter;我的问题稍有不同。例如,我使用的是Ubuntu Gnome,那里的python-qt并不是默认安装的;所以如果我想使用python-qt应用程序,我必须下载python-qt(加上qt库)。我期望它可能是类似于KDE(或其他)台式机的东西...Python - 用于GUI库的跨平台包装器?

那么,通常我需要制作一个非常简单的GUI,并且我希望它能够“随处运行“哪里有Python ......但是,如果用户已经拥有这些库中的一些,我会说,为什么不使用它们?对于复杂的东西,显然一个包罗万象的包装是不可行的(毕竟,所有这些库都是跨平台的),但对于简单的东西,比如下面的“hello work”例子,可能有一些已经存在的东西?

相较于下面的例子中,我想像类似的信息(伪):

... 
appgui = getCrossPlatformGUI() 
mw = appgui.getMainWindow() 
button = appgui.getButton(args) 
appgui.connect(button, args) 
appgui.show(button) 
... 

...在Linux上,其中getCrossPlatformGUI()将首先寻找python-qt,如果没有找到,那么python-gtk,然后wxWindows,然后tkInter(在Windows上可能以不同的顺序,等等) - 并将提供一个窗口/应用程序的库已在系统上找到,默认情况下在所有情况下tkInter(据我所知,它始终建立在Python )。

非常感谢任何答案,
干杯!

 

hello-pyqt.pyhello-pyqt-ubuntu.pnghello-pyqt-opensuse.png

#!/usr/bin/env python 
# http://en.wikibooks.org/wiki/Python_Programming/PyQt4#Hello.2C_world.21 

import sys 
from PyQt4 import Qt, QtCore 

def sayHello(): 
    print "Hello, World!" 

##### 

a = Qt.QApplication(sys.argv) 

hellobutton = Qt.QPushButton("Say 'Hello world!'", None) 

a.connect(hellobutton, Qt.SIGNAL("clicked()"), sayHello) 
hellobutton.clicked.connect(QtCore.QCoreApplication.instance().quit) 

hellobutton.show() 

a.exec_() 

hello-pygtk.pyhello-pygtk-ubuntu.pnghello-pygtk-opensuse.png

#!/usr/bin/env python 
# http://www.pygtk.org/pygtk2tutorial/examples/helloworld.py 

import pygtk 
pygtk.require('2.0') 
import gtk 

# This is a callback function. The data arguments are ignored 
# in this example. More on callbacks below. 
def sayHello(widget, data=None): 
    print "Hello, World!" 

def destroy(widget, data=None): 
    gtk.main_quit() 

##### 

window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
window.connect("destroy", destroy) 

hellobutton = gtk.Button("Say 'Hello world!'") 

hellobutton.connect("clicked", sayHello, None) 
hellobutton.connect_object("clicked", gtk.Widget.destroy, window) 

window.add(hellobutton) 
hellobutton.show() 
window.show() 

gtk.main() 
+3

然后,当有人想运行* your *应用程序时,他们将不得不下载并安装这个跨平台的GUI库抽象库。 – icktoofay

+3

http://xkcd.com/927/ – Blair

+0

感谢您的评论,@icktoofay - 我看到了讽刺;但我希望包装将只是一个文件(将与应用程序一起下载):)干杯! – sdaau

回答

6

所谓的wxWidgets库的建立是为了做到这点; “wx”代表Windows和X.他们的history page有更多信息。你可能知道Python的绑定是wxPython。显然现在感觉像是另一个重量级GUI库,但它“包装”原生GTK/Qt/Windows小部件。

+0

真棒,感谢那封信,@Petr Viktorin--对此毫不知情......干杯! – sdaau