QtAlchemy adalah kumpulan Qt Model-View kelas dan fungsi pembantu untuk membantu dalam perkembangan pesat dari aplikasi database desktop & nbsp;. Hal ini bertujuan untuk memberikan API yang kuat untuk mengungkap hubungan kunci asing dengan cara yang elegan dan langsung ke pengguna aplikasi . Menu konteks, pencarian dan combo-kotak dan interface tab semua dimanfaatkan. Penggunaan SQLAlchemy memungkinkan bahwa fitur ini didukung pada berbagai backends basis data dengan hampir tidak ada perubahan kode.
Kelas Command memberikan cara untuk membangun menu dan toolbar dari fungsi python dihiasi. Kekuatan ini menjadi lebih jelas ketika terkait dengan pandangan di mana fungsi perintah kemudian dapat menerima identifier dari item yang dipilih dari pandangan. Ini menyediakan cara yang fleksibel untuk menghubungkan perintah untuk setiap pandangan permintaan SQLAlchemy yang dihasilkan.
Dokumentasi lengkap tersedia di http://qtalchemy.org.
QtAlchemy telah dikembangkan dengan python 2.6.x, 0.6.x SQLAlchemy dan PyQt 4.7.x. Diharapkan bahwa akan fungsional pada semua versi dekatnya. Ada upaya dilakukan untuk memastikan bahwa fitur paritas dicapai untuk windows dan linux (dan mac juga, tapi saya tidak punya).
QtAlchemy diharapkan untuk sepenuhnya bekerja dengan PySide sebagai versi 1.0.4. Dukungan PySide dapat diaktifkan dengan menjalankan use_pyside.sh shell script yang hanya mengubah impor dari PyQt4 ke PySide.
Contoh
Dalam kepentingan yang ringkas, contoh yang diberikan di sini tidak referensi database.
QtAlchemy menggunakan Api2 dari PyQt jadi kita harus mengaktifkan bahwa sebelum mengimpor PyQt4
& Nbsp; >>> impor sip
& Nbsp; >>> sip.setapi ('QString', 2)
& Nbsp; >>> sip.setapi ('QVariant', 2)
The UserAttr kelas properti menyediakan lagi properti python jenis didefinisikan. Tujuan menciptakan kembali ini adalah untuk memastikan bahwa kita bisa berinteraksi dengan model kami cukup dan memberikan pengalaman yang seragam untuk SQLAlchemy properti kolom dan sifat UserAttr.
& Nbsp; >>> dari qtalchemy impor UserAttr
& Nbsp; >>> import datetime
& Nbsp; >>> class Person (object):
& Nbsp; ... name = UserAttr (str, "Nama")
& Nbsp; ... birth_date = UserAttr (datetime.date, "Tanggal Lahir")
& Nbsp; ... usia = UserAttr (int, "Umur (hari)", dibaca = True)
& Nbsp; ...
& Nbsp; ... @ age.on_get
& Nbsp; ... def age_getter (self):
& Nbsp; ... pulang (datetime.date.today () - self.birth_date) .days
Dengan pernyataan ini, kita bisa mendeklarasikan seseorang dan menghitung usia mereka:
& Nbsp; >>> saya = Orang ()
& Nbsp; >>> me.name = "Joel"
& Nbsp; >>> me.birth_date = datetime.date (1979,1,9)
& Nbsp; >>> #depends me.age hari ini! - #doctest: + SKIP
& Nbsp; 11.746
& Nbsp; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) hari # pada hari ulang tahun 1> dari PyQt4 impor QtCore, QtGui.
& Nbsp; >>> dari qtalchemy impor MapperMixin, LayoutLayout, ButtonBoxButton, LayoutWidget
& Nbsp; >>>
& Nbsp; >>> kelas PersonEdit (QtGui.QDialog, MapperMixin):
& Nbsp; ... def __init __ (self, orang tua, orang):
& Nbsp; ... QtGui.QDialog .__ init __ (self, orang tua)
& Nbsp; ... MapperMixin .__ init __ (self)
& Nbsp; ...
& Nbsp; ... self.person = orang
& Nbsp; ...
& Nbsp; ... vbox = QtGui.QVBoxLayout (self)
& Nbsp; ... mm = self.mapClass (Orang)
& Nbsp; ... mm.addBoundForm (vbox, ["nama", "birth_date"])
& Nbsp; ... mm.connect_instance (self.person)
& Nbsp; ...
& Nbsp; ... tombol = LayoutWidget (vbox, QtGui.QDialogButtonBox ())
& Nbsp; ... self.close_button = ButtonBoxButton (tombol, QtGui.QDialogButtonBox.Ok)
& Nbsp; ... buttons.accepted.connect (self.btnClose)
& Nbsp; ...
& Nbsp; ... def btnClose (self):
& Nbsp; ... self.submit () # perubahan turun untuk model pada fokus-perubahan; memastikan menerima fokus saat
& Nbsp; ... self.close ()
Dan, sekarang, kita hanya perlu beberapa kode aplikasi untuk benar-benar menendang off ini
& Nbsp; >>> app = QtGui.QApplication ([])
& Nbsp; >>> sam = Orang ()
& Nbsp; >>> sam.name = "Samuel"
& Nbsp; >>> d = PersonEdit (None, sam)
& Nbsp; >>> d.exec_ () # gui interaksi - #doctest: + SKIP
& Nbsp; 0
& Nbsp; >>> sam.age # mengasumsikan pemilihan kemarin di gui - #doctest: + SKIP
& Nbsp; 1
Pengembangan
QtAlchemy masih dalam pengembangan inti berat sebanyak jadwal kerja saya memungkinkan. Dokumentasi ini berkembang sebagai ide-ide yang fleshed keluar dan saya belajar sphinx untuk generasi dokumentasi umum. Kami berusaha untuk cakupan doc-test sepenuh mungkin, tapi PyQt model-view dan gui memaksakan komplikasi tertentu pada doc-tes.
Harapan saya untuk 0,7 terus meningkat sehingga saya menyerah pada rilis 0.6.10 dengan nama baru qtalchemy. Ini datang dipasangkan dengan merek baru (dan tidak benar-benar selesai) halaman web http://qtalchemy.org. Sebelum rilis 0.7, saya bertujuan untuk memiliki:
- Dokumen InputYoke seleksi
- PBMdiTable dan PBSearchDialog pindah ke qtalchemy.ext
Apa yang baru dalam rilis ini:
- 3 dukungan Python! Tidak ada 2to3 atau gotchas lainnya.
- perbaikan kompatibilitas SQLAlchemy 0.9x
Apa yang baru dalam versi 0.8.0:
- Ubah ke PySide sebagai impor standar
- Relax lisensi dari GPL ke LGPL
- Meningkatkan perubahan kuk penanganan
- Buat PopupKeyListing baru untuk masuk kunci asing
Apa yang baru dalam versi 0.7.1:
- QueryDataView memperoleh kemampuan dasar untuk requery pada header kolom klik untuk menyortir
- beberapa doc
- pembantu baru fungsi keluarga untuk menggunakan Geraldo di qtalchemy.ext.reporttools
Perbaikan
Apa yang baru dalam versi 0.7.0:
- meningkatkan penanganan kesalahan pengecualian dan pelaporan untuk aplikasi GUI dengan -out konsol
- kuk baru yang mendukung kotak combo
- meningkatkan dokumentasi kuk
- menambahkan contoh lengkap untuk depan dokumentasi
- berbagai model / daftar perbaikan termasuk lebar kolom default
Apa yang baru dalam versi 0.6.12:
- BoundCommandMenu telah slot untuk dikirim dari entitas yang mengikat html perintah untuk melihat bentuk html
- terstruktur beban dan menyimpan memperluas kerangka di BoundDialog
- TreeView baru mengekspos QTreeView
- dukungan model pohon di PBTableModel
- ditingkatkan PySide portabilitas dan tetap berbagai kecelakaan-bug yang terkait dengan
Apa yang baru dalam versi 0.6.11:
- konteks bantuan sensitif dan status tips untuk bidang
- preCommand baru / penyegaran sinyal dengan struktur CommandEvent memungkinkan membatalkan dengan layar ambien
- perbaikan dalam generik panduan impor data li>
- tampilan tabel perbaikan (perbaikan bug, update model yang dikoreksi untuk lebih tepatnya)
- digunakan pywin32 ShellExecute bukan os.system untuk jendela yang lebih baik dukungan
Apa yang baru dalam versi 0.6.10:
- berganti nama menjadi qtalchemy
- terkena asosiasi Qt ikon dengan perintah muncul dalam menu dan toolbar
- pindah ke qtalchemy.PBTable qtalchemy.widgets.TableView
- modul qtalchemy.ext baru untuk dialog umum (wizard data impor untuk saat ini)
Persyaratan :
- Python
Komentar tidak ditemukan