İçindekiler
Yapabilecek başka API'ler var Python'da GUI uygulamaları oluşturun Örneğin QT Tasarımcısı Bu, güzel görünümlü bir görsel arayüz oluşturmanıza ve ardından PyQt kitaplıkları aracılığıyla Python'da gerekli arayüz kodunu otomatik olarak komutla oluşturmanıza olanak tanır. pyuik, nedir QT için UI derleyicisi onunla ne geliyor PyQt paketi.Bu eğitimde, bir Sqlite 3 veritabanına bağlanmak için görsel bir uygulama oluşturacağız ve verileri kaydetme ve görüntüleme işlevlerini tanımlayacağız.
Bunun için Sqlite'da veritabanı oluşturarak başlayacağız, bunun için herhangi bir işletim sisteminde kullanılabilecek Sqliteman yazılımını kullanabiliriz. Sqlite sürüm 3 veritabanlarını yönetebilmek için indirip kurabiliriz.
Sonra menüye gidiyoruz Bağlam> Tablo Oluştur ve ürünler tablosunu oluşturuyoruz.
CREATE TABLE ürünleri (METİN NULL DEĞİL kod, METİN NULL DEĞİL ürün, METİN NULL DEĞİL miktar, METİN NULL DEĞİL fiyatı)Python'da programlamak için bu eğitimde NetBeans kullanacağız, Netbeans Plugins web sitesinden indirebileceğimiz bir eklentiye ihtiyacımız olacak.
Üst karakter + ↓
Ardından eklentiyi etkinleştirmek için Yükle düğmesine tıklayacağız, ardından NetBeans'i yeniden başlatacağız.Her öğeyi yapılandırmak için birçok özelliğimiz var ama bu derste en temel olanları kullanacağız. Bu yüzden her etiketi alıp ekrana sürükleyerek istediğimiz konumda bırakacağız.
Sonra metin kutularını veya LineEdit'i koyacağız, her birine bir isim atayacağız txtKodu, txtÜrün, txt Miktarı, txtFiyat. Bunlar, veri gireceğimiz bu metin kutuları ile veritabanının alanları olacak ve daha sonra kaydedeceğiz.
Sonra 2 koyacağız Butona basınız veya düğmeler biri olacak btKaydet veri tabanına ve diğerlerine veri eklemek için btGüncelleme Bir veri listesini güncellemek için
Sonra bir ekleyeceğiz tabloWidget'ı sol sütunda da aramamız gerekecek, ekrana sürükleyip adlandırıyoruz tbl ürün listesi.
Ardından dosyayı productlist.ui olarak kaydediyoruz. oluşturduğumuz projenin bulunduğu klasörde net fasulye.
Dosyayı dönüştürmek için bir terminal penceresi açıyoruz QT ürün listesi.ui aşağıdaki komutu kullanarak python'a:
puic4 productlist.ui> productlist.pyTasarımın Python kodu aşağıdaki gibi olacaktır.
# - * - kodlama: utf-8 - * - # 'productlist.ui' ui dosyasının okunmasından oluşturulan form uygulaması # # Oluşturuldu: 1 Kasım Pazar 18:03:40 2015 # yazan: PyQt4 UI kod üreteci 4.10.4 # # UYARI! Bu dosyada yapılan tüm değişiklikler kaybolacak! PyQt4'ten içe aktar QtCore, QtGui deneyin: _fromUtf8 = QtCore.QString.fromUtf8, AttributeError hariç: def _fromUtf8 (s): dönüş s deneyin: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui (bağlam, dönüş, dönüşGuicontext. AttributeError: def _translate (bağlam, metin, belirsizliği gider) hariç çevirmek (bağlam, metin, belirsizliği giderme, _encoding): QtGui.QApplication.translate (bağlam, metin, belirsizliği giderme) sınıfı Ui_UIProducts (nesne): def setupUi (kendi, UIProducts): UIProducts.setObjectName (_fromUtf8 ("UIProductos")) UIProductos.resize (497, 374) self.centralwidget = QtGui.QWidget (UIProducts) self.centralwidget.setObjectName (_fromUtf8 ("centralwidgetGuiCodigo") self.lQLablidgoti self.lblCodigo.setGeometry (QtCore.QRect (20, 16, 56, 17)) self.lblCodigo.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblCodigo.setTextFormat (QtCore.Qt ).PlainText (QtCore.Qt .PlainText (QtCore.Qt ).PlainText self.lblCodigo.setObjectName (_fromUtf8 ("lblCodigo")) self.lblPrice = QtGui.QLabel (self.centralwidget) self.lblPrice.setGeo metri (QtCore.QRect (260, 40, 56, 17)) self.lblPrice.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblPrice.setObjectName (_fromUtf8 ("lblPrice")) self.lblQuantity = QtGui.QLabel (self.centralwidget) self.lblAmount.setGeometry (QtCore.QRect (20, 46, 56, 17)) self.lblAmount.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblAmount.setObjectName (_fromUtf8 ("lbljectName ( _fromUtf8 (" lbljectCan) )) self.txtCode = QtGui.QLineEdit (self.centralwidget) self.txtCode.setGeometry (QtCore.QRect (90, 10, 113, 27)) self.txtCodigo.setObjectName (_fromUtf8")txt ) self.txtPrice = QtGui.QLineEdit (self.centralwidget) self.txtPrice.setGeometry (QtCore.QRect (340, 40, 113, 27)) self.txtPrice.setObjectName (_fromUtf8 ("txtPrice")) self.txtQuantity = Qt .QLineEdit (self. centralwidget) self.txtAmount.setGeometry (QtCore.QRect (90, 40, 113, 27)) self.txtAmount.setObjectName (_fromUtf8 ("txtAmount")) self.line = QtGui.QFrame (self.centralwidget) ) self.line.setGeometry (QtCore.QRect (20, 110, 461, 16)) self.line.setFrameShape ( QtGui.QFrame.HLine) self.line.setFrameShadow (QtGui.QFrame.Sunken) self.line.setObjectName (_fromUtf8 ("satır")) self.btSave = QtGui.QPushButton (self.centralwidget) self.btCoretry (QtGetry) self .btCoretry (QtGetry) .QRect (140, 80, 91, 27)) self.btSave.setMinimumSize (QtCore.QSize (91, 0)) self.btSave.setObjectName (_fromUtf8 ("btSave")) self.btUpdate = QtGui .QPush .Button (self. centralwidget) self.btUpdate.setGeometry (QtCore.QRect (250, 80, 101, 27)) self.btUpdate.setMinimumSize (QtCore.QSize (101, 0) self.btUpdate.setObjectName (_fromUtf8) (") selfActualize .label = QtGui.QLabel (self.centralwidget) self.label.setGeometry (QtCore.QRect (190, 130, 121, 17)) self.label.setObjectName (_fromUtf8 ("etiket")) self.lblProduct = QtGui.QLabel (self.centralwidget) self.lblProduct.setGeometry (QtCore.QRect (260, 10, 56, 21)) self.lblProducto.setMaximumSize (QtCore.QSize (16777215, 21)) self.lblProduct.setObjectName (_fromUtf8) ("lblProduct") )) self.txtProduct = QtGui.QLineEdit (self.centralwidget) self.txtP product.setGeometry (QtCore.QRect (340, 10, 113, 27)) self.txtProduct.setObjectName (_fromUtf8 ("txtProduct")) self.tableWidget = QtGui.QTableWidget (self.centralwidget) self.tableWidget.setGeometry (QtCore. QRect (10, 170, 471, 131)) self.tableWidget.setWordWrap (True) self.tableWidget.setObjectName (_fromUtf8 ("tableWidget")) self.tableWidget.setColumnCount (0) self.tableWidget.setRowCount (0) UIProducts. setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (UIProducts) self.menubar.setGeometry (QtCore.QRect (0, 0, 497, 27)) self.menubar.setObjectName (_fromUtf8 ("menubarductos").) setMenuBar (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("durum çubuğu")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUiBUIProjectNameBro) : UIProducts.setWindowTitle (_translate ("UIProducts", "Ürün Listesi", Yok)) self.lblCodigo.setText (_translate ("U IProducts "," Code ", Yok)) self.lblPrice.setText (_translate (" IProducts "," Fiyat ", Yok)) self.lblQuantity.setText (_translate (" UIProducts "," Quantity ", Yok)) self. btSave.setText (_translate ("UIProducts", "Kaydet", Yok)) self.btUpdate.setText (_translate ("UIProducts", "Listeyi Güncelleme", Yok)) self.label.setText (_translate ("UIProducts", " Ürün Listesi ", Yok)) self.lblProducto.setText (_translate (" UIProductos "," Ürün ", Yok)) self.tableWidget.setSortingEnabled (True)Ardından, öncekinde tanımlanan tasarım işlevselliği için başka bir dosya oluşturacağız:
PyQt4'ten QtCore'u PyQt4'ten içe aktar QtGui'yi PyQt4.QtCore'dan içe aktar * PyQt4.QtGui'den içe aktar * ürün listesinden içe aktar Ui_FrmProducts içe aktar sqlite3 içe aktar sys sınıfı FrmProducts (QtGui.QMainWindow).__ def __init = __ def __init = __ (self, parent) self.ui = Ui_FrmProducts () self.ui.setupUi (self) self.ui.btSave.clicked.connect (self.Save_click) self.ui.btUpdate.clicked.connect (self.Update_click) self . Veritabanını Başlat () self.conn = Yok self.cursor = Yok # Veritabanını başlatıyoruz ve mevcut değilse tabloyu oluşturuyoruz def Veritabanını Başlat (self): self.conn = sqlite3.connect ("dbproducts.bd") imleç = self .conn.cursor () imleç.execute ("" "MEVCUT DEĞİLSE TABLO OLUŞTURUN (METİN BOŞ kod DEĞİL, METİN BOŞ DEĞİL ürün, METİN BOŞ DEĞİL miktar, METİN BOŞ DEĞİL fiyat)" "") def Save_click (self ): bağlantı = sqlite3.connect ("dbproducts.bd") imleç = bağlantı.cursor () self.code = str (self.ui.txtTextCode ()) self.product = str (self.ui.txtProduct.text ()) self.quantity = str (self.ui.txtAmount.text ()) self.price = str (self.ui.txtPrice.text ()) self.register = (self.code, self.product, self. miktar, self.fiyat) imleç.execute ("ürünlere EKLE (kod, ürün, miktar, fiyat) DEĞERLER (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (self, "Kayıt kaydedildi", "Bildirim") def Update_click (self): bağlantı = sqlite3.connect ("dbproductos.bd") imleç = bağlantı.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # Belirtilen veriler imleç tablosundan yüklenir. QStringList () database_table_column_count = 4 database_table_columns = {} database_table_items = [] self.ui.tableWidget.setColumnCount (database_table_column_count) self.satır sayısı = len (table_info) self.ui.tableWidget. aralıktaki j için numberoffi satırları [0baskı)] (kendi.satır sayısı): satır = table_info [j] aralıktaki i için j yazdır (0, len (satır)): öğe = satır [i] öğe öğesini yazdır = str (öğe) yeni öğe = QTableWidgetItem (öğe) self.ui.tableWidget.setItem (j, i , newitem) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) myapp = FrmProducts () myapp.show () sys.exit (app.exec_ ())Kodu yürütürken sonuç aşağıdaki gibi olacaktır: