Python - GUI库的跨平台包装器?

时间:2011-11-05 02:46:18

标签: python user-interface cross-platform

我见过python - Pygtk VS Pyqt VS WxPython VS Tkinter;我的问题略有不同。

例如,我使用Ubuntu Gnome,默认情况下没有安装python-qt;所以,如果我想使用python-qt应用程序,我必须下载python-qt(加上qt库);我希望它可能与KDE(或其他)桌面类似......

好吧,我经常需要生成一个非常简单的GUI,我希望能够“在任何地方运行”有Python ...但是,如果用户已经拥有其中的一些库,我会说,为什么不使用它们呢?对于复杂的东西,显然一个无所不包的包装器是不可行的(毕竟,所有这些库都是跨平台的) - 但对于简单的东西,如下面的“你好工作”示例,也许有一些已经存在的东西?

与下面的例子相比,我想象的是(伪代码):

...
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()

1 个答案:

答案 0 :(得分:6)

创建名为wxWidgets的库就是为了做到这一点; “wx”代表Windows和X.他们的history page有更多信息。正如您所知,它的Python绑定是wxPython。

显然现在它感觉像是另一个重量级GUI库,但它“只是”包装原生GTK / Qt / Windows小部件。