Programos su „Sqlite“ duomenų baze, „PyQT“ ir „QT Desginer“

Turinys
Galimos ir kitos API sukurti GUI programas „Python“ pavyzdžiui QT dizaineris Tai leidžia jums sukurti gražiai atrodančias vaizdines sąsajas, o tada per „PyQt“ bibliotekas automatiškai sugeneruoti reikiamą „Python“ sąsajų kodą su komanda pyuic, kas yra a UT kompiliatorius QT kas su juo ateina PyQt paketas.

Pamoka Kelių platformų programos su „Python“, „PyQT“ ir „QT Desginer 5“, mes pradėjome, kaip įdiegti ir konfigūruoti „python“, „pyqt“ ir „qt“. Šiame vadove mes naudosime „PyQT 4“ stabilumo sumetimais, jis taip pat gali būti naudojamas su „PyQt 5“ bibliotekomis .
Šioje pamokoje mes sukursime vaizdinę programą, skirtą prijungti „Sqlite 3“ duomenų bazę ir apibrėžti duomenų išsaugojimo ir rodymo funkcijas.
Pradėsime nuo duomenų bazės kūrimo „Sqlite“, tam galime naudoti „Sqliteman“ programinę įrangą, kurią galima naudoti bet kurioje operacinėje sistemoje. Galime ją atsisiųsti ir įdiegti, kad galėtume valdyti „Sqlite“ 3 versijos duomenų bazes.

Iš oficialios svetainės galime atsisiųsti operacinės sistemos versiją, kuri mums tinka.

Toliau paleidžiame „Sqliteman“ ir einame į meniu Failas> Naujas failas ir sukuriame savo duomenų bazę dbproducts.db.
Tada einame į meniu Kontekstas> Sukurti lentelę ir mes kuriame produktų lentelę.

SQL kodą galima gauti iš tos pačios programinės įrangos, dešiniuoju pelės mygtuku spustelėjus lentelės pavadinimą ir naudojant parinktį Aprašyti lentelę, gautas kodas bus toks:
 KURTI LENTELĖS produktus (TEKSTAS NĖRA NULL kodas, TEKSTAS NĖRA NULL produktas, TEKSTAS NĖRA NULL kiekis, TEKSTAS NĖRA NULL kaina)
Norėdami programuoti „Python“, šioje pamokoje naudosime „NetBeans“, mums reikės papildinio, kurį galime atsisiųsti iš „Netbeans Plugins“ svetainės.

Mes atsisiųsime failą, išpakuosime jį, aplanko viduje turėsime visus failus ir priklausomybes, kurias reikia pridėti prie „NetBeans“.

Tada atidarome „Netbeans“ programą, mums reikės 8.0.2 versijos ir einame į meniu Įrankiai> papildinys, tada mes einame į skirtuką Atsisiųsta ir atsidarys dialogo langas, kuriame mes pasirinksime visus papildinius, kuriuos atsisiųsime naudodami raktą:

„Shift“ +

Tada spustelėsime mygtuką Įdiegti, kad suaktyvintumėte papildinį, tada iš naujo paleisime „NetBeans“.

Tada atidarome „NetBeans“ ir einame į meniu Failas> Naujas projektas ir mes pasirenkame „Python“ parinktį, tada „Python Project“.

Tada savo projektui priskirsime pavadinimą ir kodą vykdysiančios „python“ versiją, šiuo atveju 2.7.6 versiją.

Dabar, kai sukūrėme projektą, mes sukursime sąsają tam, eisime į „Qt designer“ ir sukursime šį ekraną

Pirmiausia sukursime „Qt Designer“ projektą, eisime į meniu „Failas“> „Naujas projektas“ ir pasirinkite ekrano tipą, kurį ketiname naudoti, tai bus pagrindinis langas.

Tada įdėsime 4 valdiklio etiketę, jei jos nerasime valdiklių laukelyje kairėje, turėsime jos ieškoti.

Dešinėje esančiame ypatybių laukelyje kiekvienam turime priskirti atitinkamą pavadinimą ir tada jį identifikuoti, naudodami kodų sutartis, turėtume šiuos pavadinimus lblKodas, lblProduktas, lbl Kiekis Y lbl Kaina.
Turime daug savybių kiekvienam elementui sukonfigūruoti, tačiau šioje pamokoje naudosime pačias paprasčiausias. Taigi mes paimsime kiekvieną etiketę ir nuvilksime į ekraną, kad paliktume norimą padėtį.
Toliau mes įdėsime teksto laukelius arba „LineEdit“, kiekvienam iš jų priskirsime pavadinimą txtCode, txtProduct, txt Kiekis, txtKaina. Tai bus duomenų bazės laukai su šiais teksto laukais, įvesime duomenis, kuriuos vėliau išsaugosime.
Toliau įdėsime 2 Mygtukas arba mygtukai vienas bus btSave įterpti duomenis į duomenų bazę ir kt btAtnaujinti atnaujinti duomenų sąrašą.
Tada pridėsime a tableWidget kad mes taip pat turėsime ieškoti kairiajame stulpelyje, vilkite jį į ekraną ir pavadinkite tbl produktų sąrašas.
Tada išsaugome failą kaip productlist.ui. aplanke, kuriame yra projektas, kurį sukūrėme tinkleliai.
Mes atidarome terminalo langą, iš kurio konvertuojame failą QT produktų sąrašas.ui į python naudodami šią komandą:
 puic4 productlist.ui> productlist.py
Dizaino „Python“ kodas bus toks
 # - * - kodavimas: utf -8 - * - # Formos diegimas sugeneruotas skaitant ui failą „productlist.ui“ # # Sukurtas: sekm. lapkričio 1 d. 18:03:40 2015 # pagal: PyQt4 UI kodų generatorius 4.10.4 # # ĮSPĖJIMAS! Visi šio failo pakeitimai bus prarasti! iš „PyQt4“ importuoti „QtCore“, „QtGui“ pabandyti: _fromUtf8 = QtCore.QString.fromUtf8, išskyrus AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui (return, displaction, versti (kontekstas, tekstas, disambig, _kodavimas), išskyrus „AttributeError“: def _translate (kontekstas, tekstas, defambig): grąžinti „QtGui“. 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.lblQu. = Q (self.centralwidget) self.lblAmount.setGeometry (QtCore.QRect (20, 46, 56, 17)) self.lblAmount.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblAmount.setObjectName (_fromUtf8 (_fromUtf8 ( _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") QTuite = tt .QLineEdit (self. Centralwidget) self.txtAmount.setGeometry (QtCore.QRect (90, 40, 113, 27)) self.txtAmount.setObjectName (_fromUtf8 ("txtAmount")) self.line = QtGui.QFrame (self.centwar). ) 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 ("eilutė")) 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.setGoometras. QRect (10, 170, 471, 131)) self.tableWidget.setWordWrap (Tiesa) self.tableWidget.setObjectName (_fromUtf8 ("tableWidget")) self.tableWidget.setColumnCount (0) self.tableWidget.setRowCount (0) UIPproduktai. setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (UIProducts) self.menubar.setGeometry (QtCore.QRect (0, 0, 497, 27)) self.menubar.setObjectName (_fromUtf8 ("menubar) rinkiniai (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("statusbar")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectCrojectUonnectUonnectUonnect : UIProducts.setWindowTitle (_translate ("UIProducts", "Produktų sąrašas", nėra)) self.lblCodigo.setText (_translate ("U „IProducts“, „Code“, None)) 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", " Produktų sąrašas ", Nėra)) self.lblProducto.setText (_translate (" UIProductos "," Produktas ", nėra)) self.tableWidget.setSortingEnabled (Tiesa)
Toliau sukursime kitą failą, skirtą dizaino funkcijoms, apibrėžtoms ankstesnėje:
 iš „PyQt4“ importuoti „QtCore“ iš „PyQt4“ importuoti „QtGui“ iš „PyQt4.QtCore“ importuoti * iš „PyQt4.QtGui“ importuoti * iš produktų sąrašo importuoti „Ui_FrmProducts“ importuoti sqlite3 importo sys klasę „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 = Nėra self.cursor = None # Paleidžiame duomenų bazę ir sukuriame lentelę, jei jos nėra def Start Database (self): self.conn = sqlite3.connect ("dbproducts.bd") žymeklis = self .conn.cursor () cursor.execute ("" "CREATE TABLE IF NOT EXISTS products (TEXT NOT NULL code, TEXT NOT NULL product, TEXT NOT NULL kiekis, TEKSTAS NOT NULL kaina)" "") def Save_click (self ): conn = sqlite3.connect ("dbproducts.bd") žymeklis = 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). kiekis, sav.kaina) cursor.execute ("INSERT INTO produktai (kodas, produktas, kiekis, kaina) VERTYBĖS (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (savarankiškai, "Įrašas išsaugotas", "Pranešimas") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") cursor = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # Nurodyti duomenys įkeliami iš lentelės cursor.execute ("PASIRINKITE kodą, produktą, kiekį, kainą iš produktų") 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 lines = len (table_info) self.ui.tableWidget.setRowCount (self.numer numberoffi eilučių [0print)] j diapazone (sav.eilių skaičius): row = table_info [j] spausdinti j i diapazone (0, len (eilutė)): item = row [i] print item 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_ ())
Vykdant kodą rezultatas bus toks:

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave