İç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.Python, PyQT ve QT Desginer 5 ile çapraz platform uygulamaları öğreticisi, python, pyqt ve qt'nin nasıl kurulacağına ve yapılandırılacağına başladık. .
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.
Resmi web sitesinden, geliştirmemiz için bize uygun işletim sistemi sürümünü indirebiliriz.
Sonra Sqliteman'ı başlatıyoruz ve menüye gidiyoruz Dosya> Yeni Dosya ve veritabanımızı oluşturuyoruz dbproducts.db.
Sonra menüye gidiyoruz Bağlam> Tablo Oluştur ve ürünler tablosunu oluşturuyoruz.
SQL kodu, aynı yazılımdan tablo adına sağ tıklanarak ve Tabloyu Tanımla seçeneği kullanılarak elde edilebilir, ortaya çıkan kod aşağıdaki gibi olacaktır:
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.
Dosyayı indiriyoruz, sıkıştırmasını açıyoruz, klasörün içinde NetBeans'e eklenecek tüm dosya ve bağımlılıklara sahip olacağız.
Daha sonra 8.0.2 sürümüne ihtiyacımız olacak Netbeans programını açıyoruz ve menüye gidiyoruz. Araçlar> Eklenti, sonra İndirilen sekmesine gidiyoruz ve indirdiğimiz tüm eklentileri anahtarla seçeceğimiz bir iletişim kutusu açılacak:
Üst karakter + ↓
Ardından eklentiyi etkinleştirmek için Yükle düğmesine tıklayacağız, ardından NetBeans'i yeniden başlatacağız.Ardından NetBeans'i açıp menüye gidiyoruz. Dosya> Yeni Proje Python seçeneğini ve ardından Python Project'i seçiyoruz.
Ardından projemize bir isim ve kodu çalıştıracak python versiyonunu atayacağız, bu durumda versiyon 2.7.6.
Şimdi projeyi oluşturduğumuza göre bunun için arayüzü oluşturacağız ve Qt tasarımcısına gideceğiz ve aşağıdaki ekranı oluşturacağız.
Önce Qt Designer projesini oluşturacağız, Dosya > Yeni Proje menüsüne gideceğiz ve kullanacağımız ekran tipini seçeceğiz, Ana Pencere olacak.
Ardından 4 widget Etiketi koyacağız, soldaki widget kutusunda bulamazsak aramamız gerekecek.
Sağdaki özellikler kutusunda, her birine kendi adını atamalı ve sonra onu tanımlamalıyız, kod kuralları ile aşağıdaki adlara sahip oluruz. lblKodu, lblÜrün, lbl Miktar Y lblFiyat.
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:
Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.