QtAlchemy är en samling av Qt Model-View klasser och hjälpfunktioner till stöd i snabb utveckling av skrivbordsdatabasapplikationer. & Nbsp; Den syftar till att ge en stark API för att exponera utländska viktiga relationer i eleganta och omedelbara sätt att användaren av ansökningar . Snabbmenyer, sökningar och kombinationsrutor och flikar gränssnitt är alla utnyttjade. Användningen av SQLAlchemy gör det möjligt att dessa funktioner stöds på en variation av databasbakändar med praktiskt taget inga ändringar i koden.
Kommando klassen ger ett sätt att konstruera menyer och verktygsfält från dekorerade python funktioner. Kraften i detta blir mer uppenbart när bundet till en vy där kommandot funktionen då kan ta emot identifieraren för den valda av vyn. Detta ger ett flexibelt sätt att länka kommandon till någon sqlalchemy fråga genererade vyer.
Full dokumentation finns på http://qtalchemy.org.
QtAlchemy har utvecklats med python 2.6.x, SQLAlchemy 0.6.x och PyQt 4.7.x. Det förväntas att det skulle vara funktionell på alla närliggande versioner. Det är ett försök görs för att se till att funktionen paritet uppnås för Windows och Linux (och mac också, men jag har inte en).
QtAlchemy förväntas fullt arbeta med PySide och med version 1.0.4. PySide stöd kan aktiveras genom att köra use_pyside.sh skalskript som endast förändrar importen från PyQt4 till PySide.
Exempel
I syfte att vara kortfattad, inte exemplet här inte referera till en databas.
QtAlchemy använder API2 av PyQt så vi måste aktivera det innan du importerar PyQt4
& Nbsp; >>> import sip
& Nbsp; >>> sip.setapi ('QString ", 2)
& Nbsp; >>> sip.setapi ('QVariant ", 2)
Den UserAttr hållfasthetsklass ger ännu en typ definierad python egendom. Syftet med att återuppfinna det var att se till att vi kunde interagera med våra modeller tillräckligt och ger en enhetlig upplevelse för SQLAlchemy kolumn egenskaper och UserAttr fastigheter.
& Nbsp; >>> från qtalchemy import UserAttr
& Nbsp; >>> importdatetime
& Nbsp; >>> klassen Person (objekt):
& Nbsp; ... name = UserAttr (str, "Namn")
& Nbsp; ... lön, födelsedatum = UserAttr (datetime.date, "Födelsedagen")
& Nbsp; ... ålder = UserAttr (int, "Ålder (dagar)", readonly = sant)
& Nbsp; ...
& Nbsp; ... @ age.on_get
& Nbsp; ... def age_getter (själv):
& Nbsp; ... avkastning (datetime.date.today () - self.birth_date) .days
Med detta uttalande, kan vi deklarera en person och beräkna sin ålder:
& Nbsp; >>> mig = Person ()
& Nbsp; >>> me.name = "Joel"
& Nbsp; >>> me.birth_date = datetime.date (1979,1,9)
& Nbsp; >>> me.age #depends på idag! - #doctest: + SKIP
& Nbsp; 11746
& Nbsp; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) dagar # på födelsedagen 1> från PyQt4 import QtCore, QtGui.
& Nbsp; >>> från qtalchemy import MapperMixin, LayoutLayout, ButtonBoxButton, LayoutWidget
& Nbsp; >>>
& Nbsp; >>> klass PersonEdit (QtGui.QDialog, MapperMixin):
& Nbsp; ... def __init __ (self, förälder, person):
& Nbsp; ... QtGui.QDialog .__ init __ (self, förälder)
& Nbsp; ... MapperMixin .__ init __ (egen)
& Nbsp; ...
& Nbsp; ... self.person = personen
& Nbsp; ...
& Nbsp; ... VBOX = QtGui.QVBoxLayout (egen)
& Nbsp; ... mm = self.mapClass (Person)
& Nbsp; ... mm.addBoundForm (VBOX, ["namn", "lön, födelsedatum"])
& Nbsp; ... mm.connect_instance (self.person)
& Nbsp; ...
& Nbsp; ... knappar = LayoutWidget (VBOX, QtGui.QDialogButtonBox ())
& Nbsp; ... self.close_button = ButtonBoxButton (knappar, QtGui.QDialogButtonBox.Ok)
& Nbsp; ... buttons.accepted.connect (self.btnClose)
& Nbsp; ...
& Nbsp; ... def btnClose (själv):
& Nbsp; ... self.submit () # förändringar sjunka till modell på fokusförändring; säkerställa emot den nuvarande inriktningen
& Nbsp; ... self.close ()
Och, nu behöver vi bara lite app-kod för att faktiskt sparka detta off
& Nbsp; >>> app = QtGui.QApplication ([])
& Nbsp; >>> sam = Person ()
& Nbsp; >>> sam.name = "Samuel"
& Nbsp; >>> d = PersonEdit (Inga, sam)
& Nbsp; >>> d.exec_ () # gui interaktion - #doctest: + SKIP
& Nbsp; 0
& Nbsp; >>> sam.age # antar urval av igår i gui - #doctest: + SKIP
& Nbsp; 1
utveckling
QtAlchemy är fortfarande i kraftig kärnutveckling så mycket som mitt arbetsschema tillåter. Dokumentationen växer som idéerna konkretiseras och jag lär sfinx för den allmänna dokumentationen generation. Vi strävar för full doc-testtäckning som möjligt, men PyQt model-view och gui införa vissa komplikationer om doc-tester.
Mina förväntningar för 0,7 fortsätter att öka så jag gav efter för en 0.6.10 frisättning under det nya namnet på qtalchemy. Detta kommer paras med en helt ny (och inte riktigt färdig) webbsida http://qtalchemy.org. Innan en 0,7 release, siktar jag ha:
- Dokument InputYoke urval
- PBMdiTable och PBSearchDialog flytta till qtalchemy.ext
Vad är nytt i den här versionen:
- Python 3 stöd! Ingen 2to3 eller andra gotchas.
- fixar SQLAlchemy 0.9x kompatibilitet
Vad är nytt i version 0.8.0:
- Byt till PySide eftersom importen standard
- Relax licens från GPL till LGPL
- Förbättra förändrings ok hantering
- Skapa ny PopupKeyListing för främmande nyckel posten
Vad är nytt i version 0.7.1:
- QueryDataView fick grundläggande förmåga att requery på kolumnrubrik klick för sortering av
- några doc fixar
- ny hjälparfunktion familj för att använda Geraldo i qtalchemy.ext.reporttools
Vad är nytt i version 0.7.0:
- förbättrad hantering och rapportering för GUI-applikationer med undantag fel Privat in- och utcheckning konsol
- nya oket stödjer en kombinationsruta li>
- förbättra dokumentationen ok
- lägga kompletta exempel för framför dokumentation
- olika modell / list förbättringar inklusive kolumnbredd försumliga
Vad är nytt i version 0.6.12:
- BoundCommandMenu har tider som skall sändas från html bindande enhet kommandon till html visning former
- strukturerad last och spara utvidga ramarna i BoundDialog
- ny Treeview utsätta QTreeView
- träd modell stöd i PBTableModel
- förbättrats PySide bärbarhet och fasta olika krasch buggar relaterade till detta li>
Vad är nytt i version 0.6.11:
- kontextkänslig hjälp och status tips för fält
- ny preCommand / uppdateringssignaler med CommandEvent struktur möjliggör avbryta genom den omgivande skärmen
- förbättringar i den generiska guiden importera data li>
- bords visa förbättringar (buggfixar, korrigerade modelluppdateringar för att vara mer exakt)
- användning pywin32 ShellExecute istället för os.system bättre fönster support
Vad är nytt i version 0.6.10:
- bytt namn till qtalchemy
- exponerad Qt associering av ikoner med kommandon som visas i menyer och verktygsfält
- flyttade qtalchemy.PBTable till qtalchemy.widgets.TableView
- ny qtalchemy.ext modul för gemensamma dialoger (en guide för nu data import)
Krav :
- Python
Kommentarer hittades inte