Я видел через Python - Pygtk VS Pyqt VS WxPython VS Tkinter ; и мой вопрос немного другой.
Например, я использую Ubuntu Gnome, там python-qt по умолчанию не установлен; и поэтому, если я хочу использовать приложение python-qt, я должен загрузить python-qt (плюс библиотеки qt); Я ожидаю, что это может быть что-то подобное для рабочих столов KDE (или других) ...
Ну, часто мне нужно было бы создать очень простой графический интерфейс, и я бы хотел, чтобы он мог "работать где угодно", где есть Python ... Однако, если у пользователя уже есть некоторые из этих библиотек, Я бы сказал, почему бы не использовать их? Для сложных вещей очевидно, что всеобъемлющая оболочка не будет жизнеспособной (в конце концов, все эти библиотеки являются кроссплатформенными), но для простых вещей, таких как примеры "привет работы" ниже, может быть, есть что-то, что уже существует?
По сравнению с приведенными ниже примерами я бы представил что-то вроде (псевдокод):
...
appgui = getCrossPlatformGUI()
mw = appgui.getMainWindow()
button = appgui.getButton(args)
appgui.connect(button, args)
appgui.show(button)
...
... где getCrossPlatformGUI()
в Linux сначала будет искать python-qt
, если не найден, то python-gtk
, затем wxWindows
, затем tkInter
(в Windows может быть в другом порядке и т. Д.) - и выдаст окно / приложение библиотеки, найденной в системе, по умолчанию во всех случаях с tkInter
(который, как я понимаю, всегда встроен в python).
Заранее большое спасибо за любые ответы,
Ура!
hello-pyqt.py
(
,
)
#!/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.py
(
,
)
#!/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()