2011-11-05 49 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