QtAlchemy ist eine Sammlung von Qt Model-View-Klassen und Hilfsfunktionen, um eine schnelle Entwicklung von Desktop-Datenbank-Anwendungen zu unterstützen. & Nbsp; Ziel ist es, eine starke API zur Belichtung Fremdschlüsselbeziehungen in einer eleganten und unmittelbaren Möglichkeiten für den Benutzer von Anwendungen . Kontextmenüs, Durchsuchungen und Combo-Boxen und Tabbed Schnittstellen werden alle genutzt. Die Verwendung von SQLAlchemy macht es möglich, dass diese Funktionen sind auf einer Vielzahl von Datenbank-Backends praktisch ohne Änderungen am Code unterstützt.
Das Command-Klasse gibt einen Weg, um Menüs und Symbolleisten von dekoriert Python-Funktionen zu konstruieren. Die Kraft dieser wird deutlich, wenn auf eine Ansicht, in der die Befehlsfunktion kann dann erhalten die Kennung des ausgewählten Elements der Ansicht gebunden. Dies bietet eine flexible Möglichkeit, Befehle an alle sqlalchemy Abfrage generiert Ansichten zu verknüpfen.
Die vollständige Dokumentation ist http://qtalchemy.org erhältlich.
QtAlchemy mit Python 2.6.x, 0.6.x und SQLAlchemy PyQt 4.7.x. entwickelt Es wird erwartet, dass es funktional sein auf allen Versionen der Nähe. Es ist ein Versuch gemacht, um sicherzustellen, dass Feature-Parität für Windows und Linux erreicht (und Mac auch, aber ich habe nicht ein).
QtAlchemy wird voraussichtlich vollständig PySide arbeiten ab Version 1.0.4. PySide Unterstützung kann durch Ausführen des use_pyside.sh Shell-Skript, das ändert nur die Importe aus PyQt4 zu PySide aktiviert sein.
Beispiel
Im Interesse des Seins prägnant, hat der hier gegebenen Beispiel nicht verweisen auf eine Datenbank.
QtAlchemy mit API2 von PyQt so müssen wir, dass Sie vor dem Import PyQt4 aktivieren
& Nbsp; >>> import Schluck
& Nbsp; >>> sip.setapi ('QString', 2)
& Nbsp; >>> sip.setapi ('QVariant', 2)
Die UserAttr Festigkeitsklasse bietet noch eine andere Art definiert python Eigentum. Der Zweck neu zu erfinden war, um sicherzustellen, dass wir mit unseren Modellen ausreichend interagieren und die ein einheitliches Erlebnis für SQLAlchemy Spalteneigenschaften und UserAttr Eigenschaften.
& Nbsp; >>> von qtalchemy Import UserAttr
& Nbsp; >>> import datetime
& Nbsp; >>> class Person (Objekt):
& Nbsp; ... name = UserAttr (str, "Name")
& Nbsp; ... birth_date = UserAttr (datetime.date "Geburtsdatum")
& Nbsp; ... age = UserAttr (int, "Alter (Tage)", Readonly = True)
& Nbsp; ...
& Nbsp; ... @ age.on_get
& Nbsp; ... def age_getter (Selbst-):
& Nbsp; ... return (datetime.date.today () - self.birth_date) .days
Mit dieser Erklärung können wir eine Person zu erklären und berechnen deren Alter:
& Nbsp; >>> me = Person ()
& Nbsp; >>> me.name = "Joel"
& Nbsp; >>> me.birth_date = datetime.date (1979,1,9)
& Nbsp; >>> me.age #depends heute! - #doctest: + SKIP
& Nbsp; 11.746
& Nbsp; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) Tagen # auf Geburtstags 1> aus PyQt4 Import QtCore, QtGui.
& Nbsp; >>> von qtalchemy Import MapperMixin, LayoutLayout, ButtonBoxButton, LayoutWidget
& Nbsp; >>>
& Nbsp; >>> Klasse PersonEdit (QtGui.QDialog, MapperMixin):
& Nbsp; ... def init __ (self, parent, Person):
& Nbsp; ... QtGui.QDialog .__ init __ (self, parent)
& Nbsp; ... MapperMixin .__ init __ (self)
& Nbsp; ...
& Nbsp; ... self.person = Person
& Nbsp; ...
& Nbsp; ... vbox = QtGui.QVBoxLayout (Selbst-)
& Nbsp; ... mm = self.mapClass (Person)
& Nbsp; ... mm.addBoundForm (vbox, ["name", "birth_date"])
& Nbsp; ... mm.connect_instance (self.person)
& Nbsp; ...
& Nbsp; ... buttons = LayoutWidget (vbox, QtGui.QDialogButtonBox ())
& Nbsp; ... self.close_button = ButtonBoxButton (Buttons, QtGui.QDialogButtonBox.Ok)
& Nbsp; ... buttons.accepted.connect (self.btnClose)
& Nbsp; ...
& Nbsp; ... def btnClose (Selbst-):
& Nbsp; ... self.submit () # Änderungen Abstieg auf Fokuswechsel zu modellieren; sicherzustellen, erhalten den aktuellen Fokus
& Nbsp; ... self.close ()
Und jetzt brauchen wir nur einige App-Code, um tatsächlich zu treten diese aus
& Nbsp; >>> app = QtGui.QApplication ([])
& Nbsp; >>> sam = Person ()
& Nbsp; >>> sam.name = "Samuel"
& Nbsp; >>> d = PersonEdit (None, sam)
& Nbsp; >>> d.exec_ () # GUI-Interaktion - #doctest: + SKIP
& Nbsp; 0
& Nbsp; >>> sam.age # übernimmt Auswahl der gestern in der GUI - #doctest: + SKIP
& Nbsp; 1
Entwicklung
QtAlchemy noch in schweren Kernentwicklung so weit wie meine Arbeitszeit ermöglicht. Die Dokumentation wird wachsen, wie die Ideen konkretisiert und ich lerne sphinx für die allgemeine Dokumentationserstellung. Wir streben nach voller doc-Testabdeckung wie möglich, aber PyQt Model-View und gui bestimmte Komplikationen auf doc-Tests einzuführen.
Meine Erwartungen für 0,7 dies auch weiterhin zu erhöhen Ich gab, um ein Release 0.6.10 unter dem neuen Namen der qtalchemy. Dieses ist mit einem brandneuen (und nicht wirklich fertig) Webseite http://qtalchemy.org gepaart. Vor einer 0,7 Mitteilung, Mein Ziel haben:
- Dokument InputYoke Auswahl
- PBMdiTable und PBSearchDialog Umzug in qtalchemy.ext
Was ist neu in dieser Pressemitteilung:
- Python 3 Unterstützung! Kein 2to3 oder andere Fallstricke.
- SQLAlchemy 0.9x Kompatibilitätsfixes
Was ist neu in Version 0.8.0:
- Wechseln Sie PySide als Standard Importe
- Relax Lizenz GPL LGPL
- Erhöhen Joch Änderung Handhabung
- Neue PopupKeyListing für Fremdschlüsseleintrag
Was ist neu in Version 0.7.1:
- QueryDataView gewonnen grundlegende Fähigkeit, auf Spaltenkopf klickt erneut abzufragen zum Sortieren
- ein paar Fixes doc
- neuen Hilfsfunktion Familie für die Verwendung von Geraldo in qtalchemy.ext.reporttools
Was ist neu in Version 0.7.0:
- verbesserte Ausnahme Fehlerbehandlung und Reporting für GUI-Anwendungen mit -out Konsole
- neue Joch Unterstützung ein Kombinationsfeld
- Verbesserung Joch Dokumentation
- Add komplette Beispiele vor Dokumentation
- verschiedenen Modell / Liste Verbesserungen, einschließlich Spaltenbreite säumigen
Was ist neu in Version 0.6.12:
- BoundCommandMenu hat Steckplätze, von html Bindungseinheit versendet werden Befehle in HTML Sichtformen
- Laden und Speichern von strukturierten Erweiterung des Rahmens in BoundDialog
- neue TreeView Freilegung der QTreeView
- Baummodell-Unterstützung in PBTableModel
- verbesserte PySide Portabilität und Fest verschiedenen Crash-Bugs auf, dass im Zusammenhang
Was ist neu in Version 0.6.11:
- kontextsensitive Hilfe und Status-Tipps für die Felder
- neue Vorbefehl / Auffrischungssignale mit CommandEvent Struktur, die den Abbruch der Umgebungs Bildschirm
- Verbesserungen in der generischen Datenimport-Assistenten
- Verbesserungen Tabellenansicht (Bugfixes, korrigierte Modellpflege um genauer zu sein)
- verwenden pywin32 ShellExecute statt os.system für bessere Fenster Support
Was ist neu in Version 0.6.10:
- umbenannt qtalchemy
- ausgesetzt Vereinigung von Icons von Qt mit Befehlen in Menüs und Symbolleisten erscheinen
- bewegt qtalchemy.PBTable zu qtalchemy.widgets.TableView
- neue qtalchemy.ext Modul für Standarddialogfelder (ein Datenimport-Assistenten für jetzt)
Anforderungen :
- Python
Kommentare nicht gefunden