Есть ли библиотека 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 это нетрадиционное решение, но напишите себе генератор кода. Я сделал это несколько раз, используя Мако. Поэтому в моем случае я автоматически проверяю таблицу, какие столбцы она содержит и типы, и генерирую классы из этого. Это больше работы, но делает именно то, что вы хотите и для повторного использования в последующих проектах.