用于GUI库的Python跨平台包装器?

2024-03-28 13:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看透了{a1};我的问题略有不同。在

例如,我使用UbuntuGnome,默认情况下没有安装PythonQt;因此,如果我想使用PythonQt应用程序,我必须下载PythonQt(加上qt库);我预计它可能与KDE(或其他)台式机类似。。。在

嗯,通常我需要生成一个非常简单的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,然后是{},然后是{}(在Windows上,可能以不同的顺序,等等),并将提供在系统上找到的库的窗口/应用程序,在所有情况下都默认使用tkInter(据我所知,它总是用python构建的)。在

非常感谢您的回答,
干杯!在

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

^{pr2}$

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

Tags: pynonehellogtkdatashowconnect情况
1条回答
网友
1楼 · 发布于 2024-03-28 13:30:33

创建名为wxWidgets的库就是为了做到这一点;“wx”代表Windows和X。它们的history page包含更多信息。您可能知道,它的Python绑定是wxPython。在

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

相关问题 更多 >