Lietojumprogrammas ar Sqlite datu bāzi, PyQT un QT Desginer

Satura rādītājs
Ir arī citas API izveidot GUI lietojumprogrammas Python piemēram QT dizainers kas ļauj jums izveidot jauku vizuālo saskarni un pēc tam caur PyQt bibliotēkām automātiski ģenerēt nepieciešamo saskarņu kodu Python ar komandu pyuic, kas ir a UT kompilators QT kas ar to nāk PyQt pakete.

Apmācība Daudzplatformu lietojumprogrammas ar Python, PyQT un QT Desginer 5, mēs sākām, kā instalēt un konfigurēt python, pyqt un qt. Šajā apmācībā stabilitātes nolūkos izmantosim PyQT 4, to var izmantot arī ar PyQt 5 bibliotēkām .
Šajā apmācībā mēs izveidosim vizuālu lietojumprogrammu, lai savienotu Sqlite 3 datu bāzi un definētu funkcijas datu saglabāšanai un parādīšanai.
Mēs sāksim, izveidojot datu bāzi Sqlite, tāpēc mēs varam izmantot programmatūru Sqliteman, ko var izmantot jebkurā operētājsistēmā. Mēs varam to lejupielādēt un instalēt, lai varētu pārvaldīt Sqlite 3. versijas datu bāzes.

No oficiālās vietnes mēs varam lejupielādēt operētājsistēmas versiju, kas ir piemērota mūsu attīstībai.

Tālāk mēs sākam Sqliteman un dodamies uz izvēlni Fails> Jauns fails un mēs izveidojam savu datu bāzi dbproducts.db.
Tad mēs ejam uz izvēlni Konteksts> Izveidot tabulu un mēs izveidojam produktu tabulu.

SQL kodu var iegūt no tās pašas programmatūras, ar peles labo pogu noklikšķinot uz tabulas nosaukuma un izmantojot opciju Aprakstīt tabulu, iegūtais kods būs šāds:
 IZVEIDOT TABULAS produktus (TEXT NOT NULL kods, TEXT NOT NULL produkts, TEXT NOT NULL daudzums, TEXT NOT NULL cena)
Lai programmētu Python, šajā apmācībā mēs izmantosim NetBeans, mums būs nepieciešams spraudnis, kuru mēs varam lejupielādēt no Netbeans spraudņu vietnes.

Mēs lejupielādējam failu, mēs to izpakojam, mapes iekšpusē mums būs visi faili un atkarības, ko pievienot NetBeans.

Tad mēs atveram Netbeans programmu, mums būs nepieciešama versija 8.0.2 un dodamies uz izvēlni Rīki> spraudnis, tad mēs ejam uz cilni Lejupielādētie un tiks atvērts dialoglodziņš, kurā mēs atlasīsim visus spraudņus, kurus lejupielādējam ar atslēgu:

Shift +

Pēc tam mēs noklikšķināsim uz pogas Instalēt, lai aktivizētu spraudni, pēc tam restartēsim NetBeans.

Tālāk mēs atveram NetBeans un dodamies uz izvēlni Fails> Jauns projekts un mēs izvēlamies opciju Python un pēc tam Python Project.

Tad mēs piešķirsim savam projektam nosaukumu un python versiju, kas izpildīs kodu, šajā gadījumā versiju 2.7.6.

Tagad, kad esam izveidojuši projektu, mēs izveidosim saskarni šim nolūkam, dodamies pie Qt dizainera un izveidosim šādu ekrānu

Vispirms izveidosim Qt Designer projektu, atveriet izvēlni Fails> Jauns projekts un atlasiet ekrāna veidu, kuru mēs izmantosim, tas būs galvenais logs.

Tad mēs ieliksim 4 logrīku etiķeti, ja mēs to nevaram atrast logrīku lodziņā pa kreisi, mums tas būs jāmeklē.

Rekvizītu lodziņā labajā pusē mums katram ir jāpiešķir savs nosaukums un pēc tam jāidentificē, izmantojot kodu konvencijas, mums būtu šādi nosaukumi lblCode, lblProdukts, lbl Daudzums Y lblCena.
Mums ir daudz rekvizītu katra elementa konfigurēšanai, taču šajā apmācībā mēs izmantosim visvienkāršākos. Tāpēc mēs ņemsim katru etiķeti un velciet to uz ekrānu, lai atstātu to vēlamajā pozīcijā.
Tālāk mēs katram tekstlodziņam vai LineEdit piešķirsim nosaukumu txtCode, txtProduct, txt Daudzums, txtCena. Tie būs datubāzes lauki ar šiem tekstlodziņiem, mēs ievadīsim datus, kurus pēc tam saglabāsim.
Tālāk mēs ievietojam 2 Uzspied pogu vai pogas viena būs btSave lai ievietotu datus datu bāzē un citus btUpdate lai atjauninātu datu sarakstu.
Tad mēs pievienosim a tableWidget ka mums būs jāmeklē arī kreisajā slejā, mēs to velkam uz ekrānu un nosaucam tbl produktu saraksts.
Tad mēs saglabājam failu kā productlist.ui. mapē, kurā atrodas projekts, ar kuru mēs izveidojām netbeans.
Mēs atveram termināļa logu, no kura konvertēt failu QT productlist.ui uz python, izmantojot šādu komandu:
 puic4 productlist.ui> productlist.py
Dizaina Python kods būs šāds
 # - * - kodēšana: utf -8 - * - # Veidlapas ieviešana, kas ģenerēta, lasot ui failu 'productlist.ui' # # Izveidots: Sv. 1. novembris 18:03:40 2015 # autors: PyQt4 UI kodu ģenerators 4.10.4 # # BRĪDINĀJUMS! Visas šajā failā veiktās izmaiņas tiks zaudētas! no PyQt4 importēt QtCore, QtGui izmēģināt: _fromUtf8 = QtCore.QString.fromUtf8, izņemot AttributeError: def _fromUtf8 (s): atgriezties s mēģināt: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui (konteksts, atdeve, tulkot (konteksts, teksts, disambig, _encoding), izņemot AttributeError: def _tulkot (konteksts, teksts, defambig): atgriezt QtGui.QApplication.translate (konteksts, teksts, disambig) klase Ui_UIProducts (objekts): def setupUi (self, UIProducts): UIProducts.setObjectName (_fromUtf8 ("UIProductos")) UIProductos.resize (497, 374) self.centralwidget = QtGui.QWidget (UIProducts) self.centralwidget.setObjectName (_fromUtf8 ("centralwidgidgetgo.google.com) self.lblCodigo.setGeometry (QtCore.QRect (20, 16, 56, 17)) self.lblCodigo.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblCodigo.setTextFormat (QtCore.Qt) .PlainTeQ (QtCore.Qt). ) .PlainText (QtCore.Qt) .PlainText self.lblCodigo.setObjectName (_fromUtf8 ("lblCodigo")) self.lblPrice = QtGui.QLabel (self.centralwidget) self.lblPrice.setGeo metry (QtCore.QRect (260, 40, 56, 17)) self.lblPrice.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblPrice.setObjectName (_fromUtf8 ("lblPrice")) self.lblQuyity = Q (self.centralwidget) self.lblAmount.setGeometry (QtCore.QRect (20, 46, 56, 17)) self.lblAmount.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblAmount.setObjectName (_fromUtf8 (_fromUtfName (" _fromUtf8 ("lbljectCan))) self.txtCode = QtGui.QLineEdit (self.centralwidget) self.txtCode.setGeometry (QtCore.QRect (90, 10, 113, 27)) self.txtCodigo.setObjectName (" "ftUtf88" ) self.txtPrice = QtGui.QLineEdit (self.centralwidget) self.txtPrice.setGeometry (QtCore.QRect (340, 40, 113, 27)) self.txtPrice.setObjectName (_fromUtf8 ("txtPrice") Qtit = .QLineEdit (self. Centralwidget) self.txtAmount.setGeometry (QtCore.QRect (90, 40, 113, 27)) self.txtAmount.setObjectName (_fromUtf8 ("txtAmount")) self.line = QtGui.QFrame (self.centworm). ) 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 ("line")) self.btSave = QtGui.QPushButton (self.centralwidget) self.btCoretry (QtGui.QFrame.HLine) .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.setObjectNf (_f (") selfActualize .label = QtGui.QLabel (self.centralwidget) self.label.setGeometry (QtCore.QRect (190, 130, 121, 17)) self.label.setObjectName (_fromUtf8 (" label ")) 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 ( ("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.setGoometrs. 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 ("menubar) setMe. (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("statusa josla")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectCroctUroctUnectUonnectUonnect : UIProducts.setWindowTitle (_translate ("UIProducts", "Produktu saraksts", nav)) self.lblCodigo.setText (_translate ("U IPprodukti "," Kods ", Nav)) self.lblPrice.setText (_translate (" IProducts "," Price ", None)) self.lblQuantity.setText (_translate (" UIProducts "," Quantity ", None)) self. btSave.setText (_translate ("UIProducts", "Save", None)) self.btUpdate.setText (_translate ("UIProducts", "Update List", None)) self.label.setText (_translate ("UIProducts", " Produktu saraksts ", Nav)) self.lblProducto.setText (_translate (" UIProductos "," Produkts ", nav)) self.tableWidget.setSortingEnabled (True)
Tālāk mēs izveidosim citu failu iepriekšējai dizaina funkcijai:
 no PyQt4 importēt QtCore no PyQt4 importēt QtGui no PyQt4.QtCore importēt * no PyQt4.QtGui importēt * no produktu saraksta importēt Ui_FrmProducts importēt sqlite3 importēt sys klasi FrmProducts (QtGui.QMainWindow): def __init __ (self. parent = Nin) (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. Start Database () self.conn = Nav self.cursor = None # Mēs sākam datu bāzi un izveidojam tabulu, ja tā nepastāv def Start Database (self): self.conn = sqlite3.connect ("dbproducts.bd") kursors = self .conn.cursor () cursor.execute ("" "CREATE TABLE IF NOT EXISTS products (TEXT NOT NULL code, TEXT NOT NULL product, TEXT NOT NULL daudzums, TEXT NOT NULL price)" "") def Save_click (self ): conn = sqlite3.connect ("dbproducts.bd") kursors = conn.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.) daudzums, pašcena) cursor.execute ("IEVIETOT produktus (kods, produkts, daudzums, cena) VĒRTĪBAS (?,?,?,?)", pašreģistrēties) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (sevi, "Ieraksts saglabāts", "Paziņojums") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") cursor = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # Norādītie dati tiek ielādēti no tabulas cursor.execute ("SELECT kods, produkts, daudzums, cena NO produktiem") table_info = cursor.fetchall () string_list = QStringList () database_table_column_count = 4 database_table_columns = {} database_table_items = [] self.ui.tableWidget.setColumnCount (database_table_column_count) self.now of rindas = len (table_info) self.ui.tableWidget.setRowCount (self.numerode numberoffi rindas [0 nospiedums]] j diapazonā (rindu skaits): rinda = table_info [j] drukāt j par i diapazonā (0, len (rinda)): item = rinda [i] drukas vienums item = str (item) newitem = QTableWidgetItem (item) self.ui.tableWidget.setItem (j, i , newitem) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) myapp = FrmProducts () myapp.show () sys.exit (app.exec_ ())
Izpildot kodu, rezultāts būs šāds:

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave