Python « сравнение GUI-libs на питоне: лаконичность, возможности, дизайн, кроссплатформенность

Ищу либу для формирования дизайна на питоне.
Нашёл при поиске несколько либ (кто найдёт ещё - буду благодарен): wxWidgets, pyGtk, pyQt, tkInter, PyFLTK

Что лучше? Прошу указывать в ответах скрин, код программы (пусть это будет блокнот с кнопками открыть и сохранить) и основные плюсы и минусы данной библиотеки.

1 ответов


QT одна из лучших кроссплатформенных графических библиотек.

PyQT имеет все плюсы QT, и все плюсы Python, в результате получается очень хорошая связка, мощь QT и скорость разработки Python.

Например приложение висящее в System Tray и переключающее сетевые интерфейсы пишется за полчаса с учётом чтения документации, качество которой очень радует.

Примеры использования можно посмотреть например здесь http://www.diotavelli.net/PyQtWiki/Tutorials

Если жесткая кроссплатформенность не нужна - есть прекрасный PyGTK2, туториал легко найти http://www.pygtk.org/pygtk2tutorial/index.html
Особенно удобно его использовать совместно с glade. Пример кода на pygtk2 ниже. Взят из туториала конечно :)


    import pygtk
    pygtk.require('2.0')
    import gtk
    class HelloWorld:
          def hello(self, widget, data=None):
              print "Hello World"
          def delete_event(self, widget, event, data=None):
              print "delete event occurred"
              return False
          def destroy(self, widget, data=None):
              gtk.main_quit()
          def __init__(self):
              self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
              self.window.connect("delete_event", self.delete_event)
              self.window.connect("destroy", self.destroy)
              self.window.set_border_width(10)
              self.button = gtk.Button("Hello World")
              self.button.connect("clicked", self.hello, None)
              self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
              self.window.add(self.button)
              self.button.show()
              self.window.show()
          def main(self):
              gtk.main()
    hello = HelloWorld()
    hello.main()
 

Извини, но скринов и текста не будет, но поскольку никто не упомянул wxPython считаю нужным упомянуть :) на плюсах мне wxWidgets нравится, на питоне только мечтаю попробовать.


По поводу PyQT, насколько я помню, там денег надо, если не open source пишешь.


Поддержу предыдущего комментатора wxPython это то, что надо. Посмотреть как он выглядит и попробовать, ну и посмотреть код можно с помощью wxFormBuilder, лучшая на мой взгляд программа для создания wx интерфейса. Плюсами wxPython являются следующее. Во первых это обертка над С++ библиотекой, т.е. интерфейс, даже самый сложный тормозить не будет, весь код компилируется. Второе, wx на мой взгляд единственная библиотека, где интерфейс созданной с помощью нее будет выглядеть родным в любой системе, windows, linux (kde, gnome итд), MacOS X. Да она не использует стиль Питона, но это мелочи, библитека проста для изучения и одна из самых мощных по набору различных виджетов. Здесь очень хороший и небольшой туториал по ней.


tkInter для очень небольших gui приложений само то. Радует тот факт, что Tk идет в комплекте дистрибутива python для windows. Да и работать с этой библиотекой очень просто.


Судя по обсуждениям в IRC-сетях, wxWidgets - стандарт де-факто для скриптовых языков. К тому же, вы сможете использовать wx не только в Пайтоне, но и в C++/Java/Perl/Haskell/... практически в любом языке. Подробнее о плюсах wxWidgets можно __тут__ почитать (там же есть примеры), плюсов действительно еще много.


Конечно, pygtk.


import gtk
spam = gtk.Window()
spam.show_all()
gtk.main()