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.Š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.
Tada einame į meniu Kontekstas> Sukurti lentelę ir mes kuriame produktų lentelę.
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.
„Shift“ + ↓
Tada spustelėsime mygtuką Įdiegti, kad suaktyvintumėte papildinį, tada iš naujo paleisime „NetBeans“.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.pyDizaino „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: