QtAlchemy là một bộ sưu tập của Qt Model-View lớp và các hàm trợ giúp để hỗ trợ trong việc phát triển nhanh chóng của các ứng dụng cơ sở dữ liệu máy tính để bàn & nbsp;. Nó nhằm mục đích cung cấp một API mạnh mẽ để lộ mối quan hệ khoá ngoại trong cách thanh lịch và ngay lập tức cho người sử dụng các ứng dụng . Những menu, tìm kiếm và combo-box và các giao diện theo thẻ đều được sử dụng. Việc sử dụng SQLAlchemy làm cho nó có thể là những tính năng được hỗ trợ trên một loạt các phần phụ trợ cơ sở dữ liệu với hầu như không có thay đổi mã.
Lớp chỉ huy cho một cách để xây dựng các menu và thanh công cụ từ chức năng python trang trí. Sức mạnh của điều này trở nên rõ ràng hơn khi kết hợp với một điểm nơi mà các chức năng lệnh sau đó có thể nhận được các định danh của mục đã chọn chế độ xem. Điều này cung cấp một cách linh hoạt để liên kết các lệnh đến bất kỳ điểm truy vấn SQLAlchemy tạo ra.
Đầy đủ tài liệu có sẵn tại http://qtalchemy.org.
QtAlchemy đã được phát triển với python 2.6.x, 0.6.x và SQLAlchemy PyQt 4.7.x. Hy vọng rằng nó sẽ là chức năng trên tất cả các phiên bản gần đó. Có một nỗ lực được thực hiện để đảm bảo rằng tính năng tính chẵn lẻ được đạt cho Windows và Linux (và mac quá, nhưng tôi không có một).
QtAlchemy được dự kiến làm việc đầy đủ với PySide như các phiên bản 1.0.4. Hỗ trợ PySide có thể được kích hoạt bằng cách chạy các script shell use_pyside.sh mà chỉ đơn thuần là thay đổi nhập khẩu từ PyQt4 để PySide.
Ví dụ
Vì lợi ích của việc súc tích, ví dụ đưa ra ở đây không tham khảo một cơ sở dữ liệu.
QtAlchemy sử dụng API2 của PyQt vì vậy chúng tôi cần phải kích hoạt trước khi nhập khẩu PyQt4
& Nbsp; >>> nhập sip
& Nbsp; >>> sip.setapi ('QString', 2)
& Nbsp; >>> sip.setapi ('QVariant', 2)
Lớp tài sản UserAttr còn cung cấp một loại tài sản được xác định python. Mục đích của việc tái phát minh này là để đảm bảo rằng chúng tôi có thể tương tác với các mô hình của chúng tôi đầy đủ và cung cấp một trải nghiệm thống nhất cho các thuộc tính cột SQLAlchemy và tính UserAttr.
& Nbsp; >>> từ qtalchemy nhập UserAttr
& Nbsp; >>> nhập datetime
& Nbsp; >>> class Person (object):
& Nbsp; ... name = UserAttr (str, "Name")
& Nbsp; ... birth_date = UserAttr (datetime.date, "Birth Date")
& Nbsp; ... tuổi = UserAttr (int, "Tuổi (ngày)", readonly = True)
& Nbsp; ...
& Nbsp; ... @ age.on_get
& Nbsp; ... def age_getter (tự):
& Nbsp; ... return (datetime.date.today () - self.birth_date) .days
Với tuyên bố này, chúng ta có thể tuyên bố một người và tính toán tuổi của họ:
& Nbsp; >>> me = Person ()
& Nbsp; >>> me.name = "Joel"
& Nbsp; >>> me.birth_date = datetime.date (1979,1,9)
& Nbsp; >>> #depends me.age vào ngày hôm nay! - #doctest: + SKIP
& Nbsp; 11746
& Nbsp; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) ngày # vào ngày sinh nhật 1> từ PyQt4 nhập QtCore, QtGui.
& Nbsp; >>> từ qtalchemy nhập MapperMixin, LayoutLayout, ButtonBoxButton, LayoutWidget
& Nbsp; >>>
& Nbsp; >>> class PersonEdit (QtGui.QDialog, MapperMixin):
& Nbsp; ... def __init __ (self, cha mẹ, người):
& Nbsp; ... QtGui.QDialog .__ init __ (self, mẹ)
& Nbsp; ... MapperMixin .__ init __ (self)
& Nbsp; ...
& Nbsp; ... self.person = person
& Nbsp; ...
& Nbsp; ... vbox = QtGui.QVBoxLayout (tự)
& Nbsp; ... mm = self.mapClass (Person)
& Nbsp; ... mm.addBoundForm (vbox, ["name", "birth_date"])
& Nbsp; ... mm.connect_instance (self.person)
& Nbsp; ...
& Nbsp; ... nút = LayoutWidget (vbox, QtGui.QDialogButtonBox ())
& Nbsp; ... self.close_button = ButtonBoxButton (nút, QtGui.QDialogButtonBox.Ok)
& Nbsp; ... buttons.accepted.connect (self.btnClose)
& Nbsp; ...
& Nbsp; ... def btnClose (tự):
& Nbsp; ... self.submit () # thay đổi xuống để mô hình tập trung vào thay đổi; bảo đảm nhận trọng tâm hiện nay
& Nbsp; ... self.close ()
Và, bây giờ, chúng tôi chỉ cần một số mã ứng dụng để thực sự đá này off
& Nbsp; >>> app = QtGui.QApplication ([])
& Nbsp; >>> sam = Person ()
& Nbsp; >>> sam.name = "Samuel"
& Nbsp; >>> d = PersonEdit (None, sam)
& Nbsp; >>> d.exec_ () # gui tương tác - #doctest: + SKIP
& Nbsp; 0
& Nbsp; >>> sam.age # giả lựa chọn của ngày hôm qua trong gui - #doctest: + SKIP
& Nbsp; 1
Phát triển
QtAlchemy vẫn còn trong phát triển cốt lõi nặng nhiều như lịch làm việc của tôi cho phép. Các tài liệu được phát triển như các ý tưởng được gọt giũa ra và tôi học sư cho các thế hệ tài liệu chung. Chúng tôi phấn đấu cho bảo hiểm doc-thử nghiệm đầy đủ nhất có thể, nhưng PyQt model-view và gui áp đặt các biến chứng nhất định trên doc-kiểm tra.
Mong đợi của tôi cho 0.7 tiếp tục tăng nên tôi đã cho trong một thông cáo 0.6.10 dưới tên mới của qtalchemy. Này đi kèm với một thương hiệu mới (và không thực sự thành) trang web http://qtalchemy.org. Trước khi phát hành 0,7, tôi nhắm đến có:
- Tài liệu InputYoke lựa chọn
- PBMdiTable và PBSearchDialog di chuyển để qtalchemy.ext
là gì mới trong phiên bản này:
- hỗ trợ Python 3! Không 2to3 hoặc gotchas khác.
- sửa lỗi tương thích SQLAlchemy 0.9x
là gì mới trong phiên bản 0.8.0:
- Thay đổi để PySide như nhập khẩu mặc định
- Relax giấy phép từ GPL để LGPL
- Cải thiện thay đổi ách xử lý
- Tạo PopupKeyListing mới cho nhập cảnh nước ngoài chính
là gì mới trong phiên bản 0.7.1:
- QueryDataView tăng khả năng cơ bản để requery trên cột nhấp chuột tiêu đề để phân loại
- một vài doc
- helper mới chức năng gia đình để sử dụng trong Geraldo qtalchemy.ext.reporttools
Sửa
là gì mới trong phiên bản 0.7.0:
- cải thiện xử lý lỗi ngoại lệ và báo cáo cho các giao diện ứng dụng với console out
- ách mới hỗ trợ một combo box
- cải thiện tài liệu ách
- thêm ví dụ hoàn chỉnh để phía trước của tài liệu
- mô hình khác nhau / cải tiến danh sách bao gồm cả chiều rộng cột mặc định
được gì mới trong phiên bản 0.6.12:
- BoundCommandMenu đã slot để có thể gửi đi từ html thực thể liên kết lệnh để xem các hình thức html
- load cấu trúc và lưu mở rộng khuôn khổ trong BoundDialog
- TreeView mới lộ QTreeView
- mô hình cây hỗ trợ trong PBTableModel
- cải thiện tính di động và cố định PySide khác nhau va chạm lỗi liên quan đến rằng
là gì mới trong phiên bản 0.6.11:
- bối cảnh giúp đỡ nhạy cảm và tình trạng lời khuyên cho các lĩnh vực
- preCommand mới / làm mới với cấu trúc CommandEvent cho phép hủy bỏ bởi các môi trường xung quanh màn hình
- cải tiến trong chương trình nhập dữ liệu chung
- xem bảng cải tiến (sửa lỗi, cập nhật mô hình điều chỉnh được chính xác hơn)
- sử dụng PyWin32 ShellExecute thay vì os.system cho cửa sổ hỗ trợ tốt hơn
Tín hiệu
là gì mới trong phiên bản 0.6.10:
- đổi tên thành qtalchemy
- tiếp xúc với hiệp hội Qt của các biểu tượng có lệnh xuất hiện trong các menu và thanh công cụ
- chuyển qtalchemy.PBTable để qtalchemy.widgets.TableView
- module qtalchemy.ext mới cho hộp thoại thông thường (một thuật sĩ nhập dữ liệu cho doanh nghiệp)
Yêu cầu :
- Python
Bình luận không