Есть ли библиотека Python, которая позволяет создавать пользовательские интерфейсы без написания большого количества кода?

Я пишу редактирование интерфейсов в Python уже несколько лет, и мне надоело микроуправлять каждой деталью пользовательского интерфейса окна или диалога каждый раз.

есть ли технология, которая позволяет мне, скажем, указать отношения между интерфейсом GTK + Glade и таблицами и записями базы данных SQLite для выполнения всей работы среднего человека? Это должно избавить меня от работы ручного написания обработчиков событий, входных оценщиков и просмотра обновлений.

в рассматриваемые технологии-это всего лишь примеры, но я хочу придерживаться Python, насколько это возможно.

8 ответов


кроме уже упомянутых, я могу добавить:

Я никогда не использовал ни один из них, поэтому у меня нет рекомендаций, но, что стоит, я использовал по крайней мере 2 сложные программы, построенные непосредственно на pygtk, которые работали как в Windows, так и в Linux.

Я думаю, что киви-единственный из них с запеченный в поддержке db (через интерфейс с SQLAlchemy, SQLObject или Storm), но я был бы удивлен, если бы вы не могли использовать один из этих ORM внутри любой из других фреймворков.


PyQt и его модели могут автоматизировать некоторые из этих задач для вас (в некоторой степени, конечно, например, заполнение виджетов данными из базы данных и обработка большей части поведения виджетов, буферизация и т. д.).

Если вы хотите более объектно-ориентированный подход к обработке SQL, вы можете посмотреть в ORM-ориентированное решение (например, SQLAlchemy).


Дабо построен поверх wxPython, поэтому вы можете не предпочесть его, но он разработан, чтобы упростить привязку GUI к базе данных, поэтому я бы рекомендовал вам проверить его, если вы еще этого не сделали. В частности, у него есть хорошие возможности для привязки виджетов к данным и обработки многих распространенных случаев разработки GUI.


wxGlade может помочь, хотя я сам не использовал его, поэтому я не говорю по опыту.

Боа-Конструктор по-видимому, в нем есть wxPython GUI builder, а также PythonCard, хотя разработка этих двух проектов, похоже, застопорилась.


черты могут быть хорошим вариантом для вас. http://code.enthought.com/projects/traits/docs/html/TUIUG/index.html

Так же просто, как сопоставить пользовательский интерфейс с объектом, не кажется слишком притянутым, чтобы включить SQLAlchemy для сохранения.


есть хорошая книга о wxPython, "wxPython в действии", чего нельзя сказать о некоторых других решениях. Не стучать в остальных. У меня был успех в разработке с wxPython в прошлом, и он поставляется с большим набором демонстрационных приложений с исходным кодом, из которого вы можете свободно заимствовать.

лучший дизайнер пользовательского интерфейса, который я нашел для приложений wxPython, является коммерческим, Anthemion DialogBlocks. Это один из программистов wxPython и стоит денег. Другой решения для дизайна пользовательского интерфейса включают wxGlade (я нашел его полезным, но не функциональным) и конструктор Boa (не использовал его). Wing IDE также может иметь один. Редактор Python Stani связывает wxGlade, я считаю. Есть много других проектов, которые на самом деле не работают или довольно старые.

Что касается автоматизации SQL, как говорит другой ответчик, я бы посмотрел на алхимию SQL, но кривая обучения для небольшого приложения может быть слишком большой, и вам будет лучше просто перейти прямо к odbc. Этот лучший ODBC api-это тот, который используется Django, pyodbc.

прошло некоторое время с тех пор, как я разрабатывал эти инструменты, поэтому для каждого может быть что-то новое, но в то время они были определенно лучшими из породы, на мой взгляд.


У меня был большой успех с wxPython, но это было несколько лет назад, и могут быть лучшие новые решения...


Ok это нетрадиционное решение, но напишите себе генератор кода. Я сделал это несколько раз, используя Мако. Поэтому в моем случае я автоматически проверяю таблицу, какие столбцы она содержит и типы, и генерирую классы из этого. Это больше работы, но делает именно то, что вы хотите и для повторного использования в последующих проектах.