QtAlchemy є колекція Qt модель-представлення класів і допоміжних функцій, щоб допомогти в швидкої розробки додатків бази даних робочого столу і NBSP ;. Вона спрямована, щоб забезпечити сильну API для експонування зовнішнього ключа в елегантною і безпосередній способів користувача додатків , Контекстні меню, пошуки і комбо-бокси та вкладок інтерфейси, що використовуються все. Використання SQLAlchemy робить можливим, щоб ці функції підтримуються на різних движків баз даних практично без зміни коду.
Клас Command дає можливість конструювати меню і панелей інструментів з прикрашених функцій Python. Потужність цього стає все більш очевидним, якщо пов'язаний з тим, де командна функція може отримати ідентифікатор обраного елемента в поданні. Це забезпечує гнучкий спосіб зв'язати команди до будь SQLAlchemy запит генеруються уявлень.
Повна документація доступна на http://qtalchemy.org.
QtAlchemy була розроблена з пітона 2.6.x, SQLAlchemy 0.6.x і PyQt 4.7.x. Очікується, що він буде працювати і на всіх прилеглих версій. Існує зусилля, зроблені, щоб переконатися, що функція паритет досягається для Windows і Linux (і Mac, але я не один).
QtAlchemy, як очікується, повноцінно працювати з PySide у версії 1.0.4. Підтримка PySide може бути включений, запустивши скрипт, use_pyside.sh, які просто змінює імпорт з PyQt4 в PySide.
Приклад
В інтересах того, щоб бути коротким, приклад, наведений тут не звернутися до бази даних.
QtAlchemy допомогою API2 з PyQt, тому ми повинні включити, що перед імпортом PyQt4
І NBSP; >>> імпорту SIP
І NBSP; >>> sip.setapi ('QString', 2)
І NBSP; >>> sip.setapi ('QVariant', 2)
Властивість класу UserAttr забезпечує ще один тип визначається пітона власності. Мета винаходити це було для того, щоб ми могли взаємодіяти з нашими моделями достатньо і забезпечують рівномірний досвід для властивостей стовпців SQLAlchemy і властивостей UserAttr.
І NBSP; >>> від qtalchemy UserAttr імпорту
І NBSP; >>> імпорту DateTime
І NBSP; >>> класу Person (об'єкт):
І NBSP; ... Ім'я = UserAttr (вул, "Name")
І NBSP; ... birth_date = UserAttr (datetime.date, "Дата народження")
І NBSP; ... вік = UserAttr (INT ", (днів)", тільки для читання = True)
І NBSP; ...
І NBSP; ... @ age.on_get
І NBSP; ... Def age_getter (само):
І NBSP; ... повернення (datetime.date.today () - self.birth_date) .days
З цієї декларації, ми можемо оголосити людини і обчислити їх вік:
І NBSP; >>> Me = Людина ()
І NBSP; >>> me.name = "Джоел"
І NBSP; >>> me.birth_date = datetime.date (1979,1,9)
І NBSP; >>> me.age #depends на сьогодні! - #doctest: + SKIP
І NBSP; 11746
І NBSP; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) днів # на день народження 1> з PyQt4 імпорту QtCore, QtGui.
І NBSP; >>> від qtalchemy MapperMixin імпорту, LayoutLayout, ButtonBoxButton, LayoutWidget
І NBSP; >>>
І NBSP; >>> класу PersonEdit (QtGui.QDialog, MapperMixin):
І NBSP; ... Def __init __ (сам, батько, особа):
І NBSP; ... QtGui.QDialog .__ ініціалізації __ (сам, батько)
І NBSP; ... MapperMixin .__ ініціалізації __ (Я)
І NBSP; ...
І NBSP; ... self.person = людина
І NBSP; ...
І NBSP; ... VBox = QtGui.QVBoxLayout (Я)
І NBSP; ... мм = self.mapClass (Person)
І NBSP; ... mm.addBoundForm (VBox, ["Ім'я", "birth_date"])
І NBSP; ... mm.connect_instance (self.person)
І NBSP; ...
І NBSP; ... кнопки = LayoutWidget (VBox, QtGui.QDialogButtonBox ())
І NBSP; ... self.close_button = ButtonBoxButton (кнопки, QtGui.QDialogButtonBox.Ok)
І NBSP; ... buttons.accepted.connect (self.btnClose)
І NBSP; ...
І NBSP; ... Def btnClose (само):
І NBSP; ... self.submit () # зміни спуститися до моделі на фокус-зміни; забезпечити отримання поточного фокусу
І NBSP; ... self.close ()
І тепер, нам потрібно тільки трохи додаток код насправді удар це від
І NBSP; >>> додаток = QtGui.QApplication ([])
І NBSP; >>> Сем = Людина ()
І NBSP; >>> sam.name = "Самуель"
І NBSP; >>> d = PersonEdit (None, SAM)
І NBSP; >>> d.exec_ () # GUI взаємодія - #doctest: + SKIP
І NBSP; 0
І NBSP; >>> sam.age # передбачає вибір Вчора в GUI - #doctest: + SKIP
І NBSP; 1
Розробка
QtAlchemy ще знаходиться в розробці важкої основний стільки, скільки мій графік роботи дозволяє. Документація росте як ідеї конкретизуються, і я дізнаюся сфінкса для загального покоління документації. Ми прагнемо до повного охоплення док-тест, наскільки це можливо, але PyQt модель-представлення і GUI накладають певні ускладнення на Doc-тестів.
Мої очікування 0,7 продовжувати рости, так що я дав в прес-релізі 0.6.10 під новим ім'ям qtalchemy. Це відбувається в парі з абсолютно новим (і не дуже закінчив) веб-сторінки http://qtalchemy.org. Перед випуском 0,7, я прагну мати:
- Документ, вибір InputYoke
- PBMdiTable і PBSearchDialog перехід до qtalchemy.ext
Що нового У цьому випуску:
- Підтримка Python 3! Ні 2to3 або інші підводні камені.
- виправлення сумісності SQLAlchemy 0.9x
Що нового у версії 0.8.0:
- Змінити, щоб PySide як імпорт замовчуванням
- Релакс ліцензію GPL, щоб LGPL
- Поліпшення зміни ярмо обробки
- Створити нову PopupKeyListing для введення даних з клавіатури зовнішньої
Що нового у версії 0.7.1:
- QueryDataView отримали основну здатність Requery на колонці кліків заголовка для сортування
- трохи Doc виправлення
- новий допоміжна функція сім'ї для використання Geraldo в qtalchemy.ext.reporttools
Що нового у версії 0.7.0:
- Покращена обробка помилок винятком і звітності для додатків з графічним інтерфейсом з від'їзду консолі
- новий хомут підтримки зі списком
- підвищення ярмо документації
- додати повні приклади перед документації
- різні моделі / поліпшення списку, що включає ширину стовпців дефолту
Що нового у версії 0.6.12:
- BoundCommandMenu має слоти повинні бути спрямовані від HTML обов'язкового юридичної особи команди HTML перегляду форми
- структуровані завантажувати і зберігати розширення рамок в BoundDialog
- новий TreeView піддаючи QTreeView
- Підтримка модель дерева в PBTableModel
- покращилася PySide портативність і Виправлені різні краш-помилки, пов'язані з цим
Що нового у версії 0.6.11:
- контекстно-залежна допомога та стану поради для полів
- новий Предв / з оновленням структури CommandEvent дозволяють переривати на екрані навколишнього середовища
- поліпшення загального майстра імпорту даних
- , поліпшення оглядовості стіл (виправлення помилок, виправлених оновлень моделі, щоб бути більш точним)
- використання pywin32 ShellExecute замість os.system для кращого підтримки Windows
Сигнали
Що нового у версії 0.6.10:
- перейменований в qtalchemy
- піддаються зв'язок в Qt іконок з команд, включених в меню і панелей інструментів
- переїхав qtalchemy.PBTable в qtalchemy.widgets.TableView
- Новий модуль qtalchemy.ext для звичайних діалогів (майстер імпорту даних в даний час)
Вимоги
- Python
Коментар не знайдено