QtAlchemy הוא אוסף של Qt Model-View כיתות ופונקציות עוזר לסייע בפיתוח מהיר של יישומי מסדי נתונים של שולחן עבודה & nbsp;. מטרתו לספק API חזק לחשיפת יחסי מפתח זרים בדרכים אלגנטיות ומיידיות למשתמש של יישומים . כל תפריטי הקשר, חיפושים ומשולבים-תיבות וממשקים עם לשוניות מנוצלים. השימוש בSQLAlchemy מאפשר כי תכונות אלה נתמכות על מגוון רחב של ממשקי מסדי נתונים עם כמעט ללא שינויי קוד.
כיתת הפיקוד נותנת דרך לבניית תפריטים וסרגלי כלים מפונקציות פיתון מעוטרת. כוחו של זה הופך להיות ברור יותר כאשר חייב נוף שבו התפקיד הפיקודי אז יכול לקבל את המזהה של הפריט שנבחר בתצוגה. זה מספק דרך גמישה כדי לקשר פקודות לכל דעות שאילתא sqlalchemy שנוצרו.
תיעוד מלא נגיש בhttp://qtalchemy.org.
QtAlchemy פותח עם 2.6.x פיתון, 0.6.x SQLAlchemy ו4.7.x. PyQt צפוי כי זה יהיה פונקציונלי על כל הגרסאות בקרבת המקום. ישנו מאמץ שנעשה כדי לוודא שזוגיות תכונה מושגת עבור Windows ו- Linux (וmac מדי, אבל אין לי אחד).
QtAlchemy צפוי לעבוד באופן מלא עם PySide כשל גרסת 1.0.4. תמיכת PySide יכולה להיות מופעלת על ידי הרצת תסריט מעטפת use_pyside.sh שרק משנה את היבוא מPyQt4 לPySide.
דוגמא
באינטרסים של להיות תמציתי, הדוגמא שניתנה כאן אינה מתייחסת למסד נתונים.
QtAlchemy באמצעות API2 של PyQt ולכן אנחנו צריכים לאפשר את זה לפני יבוא PyQt4
& Nbsp; >>> לגימת יבוא
& Nbsp; >>> sip.setapi ('QString', 2)
& Nbsp; >>> sip.setapi ('QVariant', 2)
מעמד רכוש UserAttr מספק עוד רכוש פיתון סוג מוגדר. המטרה להמציא מחדש זה הייתה להבטיח שאנחנו יכולים לקיים אינטראקציה עם המודלים שלנו מספיק ומספקים חוויה אחידה למאפייני עמודת SQLAlchemy ומאפייני UserAttr.
& Nbsp; >>> מUserAttr יבוא qtalchemy
& Nbsp; >>> datetime יבוא
& Nbsp; >>> אדם כיתה (אובייקט):
& Nbsp; ... name = UserAttr (str, "שם")
& 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; >>> = אדם ()
& Nbsp; >>> me.name = "יואל"
& Nbsp; >>> me.birth_date = datetime.date (1979,1,9)
& Nbsp; >>> #depends me.age על היום! - #doctest: + SKIP
& Nbsp; 11,746
& Nbsp; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) # ימים ביום ההולדת של 1> מPyQt4 יבוא QtCore, QtGui.
& Nbsp; >>> מMapperMixin יבוא qtalchemy, LayoutLayout, ButtonBoxButton, LayoutWidget
& Nbsp; >>>
& Nbsp; >>> PersonEdit כיתה (QtGui.QDialog, MapperMixin):
& Nbsp; ... def __init __ (עצמי, הורה, אדם):
& Nbsp; ... QtGui.QDialog .__ init __ (עצמי, הורה)
& Nbsp; ... MapperMixin .__ init __ (עצמי)
& Nbsp; ...
& Nbsp; ... self.person = אדם
& Nbsp; ...
& Nbsp; ... Vbox = QtGui.QVBoxLayout (עצמי)
& Nbsp; ... מ"מ = self.mapClass (אדם)
& 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 (אין, סם)
& Nbsp; >>> d.exec_ () אינטראקציה # GUI - #doctest: + SKIP
& Nbsp; 0
& Nbsp; >>> # sam.age מניח בחירה של אתמול בGUI - #doctest: + SKIP
& Nbsp; 1
פיתוח
QtAlchemy הוא עדיין בפיתוח ליבה כבד ככל לוח הזמנים של העבודה שלי מאפשר. התיעוד גדל כרעיונות בשר החוצה ואני לומד ספינקס עבור דור התיעוד הכללי. אנו שואפים לכיסוי doc מבחן מלא ככל האפשר, אבל PyQt מודל-תצוגה וGUI להטיל סיבוכים מסוימים על-דוקטורט בדיקות.
הציפיות שלי ל-0.7 ימשיכו לעלות ולכן נתתי לשחרור 0.6.10 תחת השם החדש של qtalchemy. זה מגיע יחד עם דף http://qtalchemy.org מותג חדש (ולא ממש סיים) אינטרנט. לפני שחרור 0.7, אני שואף להיות:
- בחירת InputYoke מסמך
- PBMdiTable ומהלך PBSearchDialog לqtalchemy.ext
מה חדש בהודעה זו:
- Python תמיכה 3! אין 2to3 או מכשלות אחרות.
- תיקוני תאימות 0.9x SQLAlchemy
מה חדש בגרסה 0.8.0:
- שינוי לPySide כברירת מחדל יבוא
- תירגע רישיון GPL לLGPL
- לשפר את שינוי עול הטיפול
- צור PopupKeyListing החדש לכניסת מפתח זרה
מה חדש בגרסת 0.7.1:
- QueryDataView צבר יכולת בסיסית requery על קליקים כותרת עמודה למיון
- כמה doc
- משפחת פונקצית עוזר חדשה לשימוש בג'רלדו בqtalchemy.ext.reporttools
תיקונים
מה חדש בגרסת 0.7.0:
- טיפול בשגיאות למעט שיפור ודיווח ליישומי GUI עם קונסולת אאוט פרטית
- עול חדש תומך תיבה משולבת
- לשפר את תיעוד עול
- להוסיף דוגמאות מלאים לחזית תיעוד
- מודל שונים / שיפורי רשימה כולל רוחב עמודת חדלות פירעון
מה חדש בגרסת 0.6.12:
- יש BoundCommandMenu חריצים שנשלח מhtml ישות מחייבת פקודות ל- HTML צפייה צורות
מה חדש בגרסה 0.6.11:
- טיפים
- עזרה בהקשר ובמעמד רגישה לשדות
- preCommand החדש / רענון עם מבנה CommandEvent מאפשרים להפיל על ידי מסך הסביבה
- שיפורים באשף יבוא נתונים גנרי
- שיפורי שולחן תצוגה (תיקוני באגים, עדכוני מודל מתוקנים לייתר דיוק)
- pywin32 השימוש ShellExecute במקום os.system לתמיכת חלונות טוב יותר
אותות
מה חדש בגרסה 0.6.10:
- שונה ל qtalchemy
דרישות :
- Python
תגובות לא נמצא