Существуют ли кроссплатформенные наборы инструментов для python, которые сделаны не сумасшедшими людьми? - PullRequest
0 голосов
/ 01 февраля 2011

ну, может быть, сумасшествие - это слишком сильное слово, но я спрашиваю, есть ли какие-нибудь оконные наборы инструментов, которые не заставляют меня делать это:

class MyApp(SomeWindowClass):

Я действительно не понимаюне хочу использовать библиотеку, созданную кем-то, кто настолько одержим объектами, что он / она думает, что должен быть класс для приложения (у которого будет только один экземпляр, поэтому я не понимаю, почему кто-то захочетчтобы сделать эту дополнительную типизацию) (кстати, без обид, предназначенных для тех, кто согласен с тем, как настроены эти библиотеки, я просто очень хочу узнать, есть ли что-нибудь там с чуть меньшим количеством объектов)

Ответы [ 5 ]

11 голосов
/ 01 февраля 2011

Как правило, наборы инструментов GUI полагаются на выполнение какой-либо формы цикла событий, класс Application в этих наборах инструментов обычно отвечает за этот цикл событий и маршалинг событий из основного оконного менеджера.Конечно, они могут вызывать класс EventLoopManager или что-то в этом роде, но вам это нужно в любом случае, так что тогда это просто именование.В некоторых случаях, хотя некоторые наборы инструментов, которые часто используют события, могут иногда использоваться без них, и тогда вы, конечно, не хотите, чтобы это было чем-то автоматическим.

5 голосов
/ 01 февраля 2011

Есть PyQT .

2 голосов
/ 01 февраля 2011

Tkinter имеет один объект на окно / диалог, а не приложение, и не требует никаких классов для рисования чего-либо на экране. Тем не менее, он имеет свой собственный основной цикл (как и все другие библиотеки GUI). Обязательный Hello World:

from Tkinter import *
root = Tk()    
w = Label(root, text="Hello, world!")
w.pack()    
root.mainloop()
0 голосов
/ 10 июля 2014

Как вы видите из ответов выше, программирование в GUI почти всегда сильно ориентировано на объект, и для этого есть веские причины: графические элементы имеют много общего в том, как их можно расположить друг в друге, заботясь о том,указатель мыши находится над ними и т. д. Кроме того, наборы C ++, которые qt, wx, gtk et al.Обтекание уже структурировано в иерархии классов / наследования, поэтому вы не должны удивляться, что обертки Python также.

Если вам нужны только простые элементы GUI, вы можете рассмотреть easyGUI (простые окна сообщений, редактирование текста, варианты выбора), triatsUI (оболочки интерактивных объектов, главным образом для управления графическими объектами), каждый из которых решает некоторую часть взаимодействий GUI без явного написания кода GUI.Для редактирования значений полей в подобной записи структуре вы также можете исследовать GUIdata.

PS: существуют различные графические инструменты, позволяющие вам создавать свои GUI и связывать вместе некоторые события, например,QtDesigner, который может помочь вам избежать значительной части утомительного кода определения класса.

0 голосов
/ 17 мая 2013

PyGTK еще один инструментарий; который является связыванием Python Gtk. Он хорошо структурирован, имеет отличную систему окон и циклов обработки событий. Типичный пример показа окна

import gtk
class Application:
    def __init__(self):
        self.window = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL)
        self.window.show()

if __name__ == "__main__":
    app = Application()
    gtk.mainloop()

Другая рекомендация - это PyQt; который является связыванием Python Qt. Типичный пример "Привет, мир":

    import sys
    from qt import *

    app = QApplication(sys.argv)
    myLabel = QLabel("Hello world!", None)
    app.setMainWidget(myLabel)
    myLabel.show()

    app.exec_loop()

PyQt и PyGtk широко используются для быстрой разработки графического интерфейса. По моему опыту, pyGtk плох в онлайн документации / поддержке по сравнению с pyQt. Но оба мои любимые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...