Съдържание
Има и други API, които можете да използвате създаване на GUI приложения в Python например QT дизайнер което ви позволява да създавате приятно изглеждащи визуални интерфейси, а след това чрез библиотеките на PyQt автоматично да генерирате необходимия код на интерфейсите в Python с командата пиуичен, какво е а UI компилатор за QT какво идва с него PyQt пакет.В този урок ще създадем визуално приложение за свързване на база данни Sqlite 3 и ще определим функциите за запазване и показване на данни.
Ще започнем със създаването на базата данни в Sqlite за това можем да използваме софтуера Sqliteman, който може да се използва във всяка операционна система. Можем да го изтеглим и инсталираме, за да можем да управляваме базите данни Sqlite версия 3.
След това отиваме в менюто Контекст> Създаване на таблица и създаваме таблицата с продукти.
СЪЗДАЙТЕ ТАБЛИЦА продукти (ТЕКСТ НЕ НУЛ код, ТЕКСТ НЕ НУЛ продукт, ТЕКСТ НЕ НУЛ количество, ТЕКСТ НЕ НУЛ цена)За да програмираме в Python, ще използваме NetBeans в този урок, ще ни трябва приставка, която можем да изтеглим от уебсайта на Netbeans Plugins.
Shift + ↓
След това ще кликнете върху бутона Инсталиране, за да активирате приставката, след което ще рестартираме NetBeans.Имаме много свойства за конфигуриране на всеки елемент, но в този урок ще използваме най -основните. Така че ние ще вземем всеки етикет и ще го плъзнем към екрана, за да го оставим в желаната от нас позиция.
След това ще поставим текстовите полета или LineEdit, на всяко от тях ще присвоим име txtCode, txtProduct, txt Количество, txtPrice. Това ще бъдат полетата на базата данни с тези текстови полета ще въведем данни, които след това ще запишем.
След това ще сложим 2 Натисни бутона или бутоните един ще бъде btSave за вмъкване на данни в базата данни и други btUpdate за актуализиране на списък с данни.
След това ще добавим а tableWidget което също ще трябва да търсим в лявата колона, плъзгаме го на екрана и го наименуваме tbl списък с продукти.
След това запазваме файла като productlist.ui. в папката, където е проектът, с който създадохме netbeans.
Отваряме терминален прозорец, от който да конвертираме файла QT productlist.ui към python, като използвате следната команда:
puic4 productlist.ui> productlist.pyКодът на дизайна на Python ще бъде следният
# - * - кодиране: utf -8 - * - # Реализация на формуляр, генериран от четене на потребителски файл 'productlist.ui' # # Създаден: 1 ноември 18:03:40 2015 # от: PyQt4 UI генератор на код 4.10.4 # # ВНИМАНИЕ! Всички промени, направени в този файл, ще бъдат загубени! от PyQt4 импортирайте QtCore, QtGui опитайте: _fromUtf8 = QtCore.QString.fromUtf8 с изключение на AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transaugugui,, translate (context, text, disambig, _encoding), с изключение на AttributeError: def _translate (context, text, disambig): връщане на QtGui.QApplication.translate (context, text, disambig) class Ui_UIProducts (object): def setupUi (self, UIProducts): UIProducts.setObjectName (_fromUtf8 ("UIProductos")) UIProductos.resize (497,337) self.lblCodigo.setGeometry (QtCore.QRect (20, 16, 56, 17)) self.lblCodigo.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblCodigo.setTextFormat (QtCore.Qt) .PlainText ) .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.lblQuantity = QtGu (self.centralwidget) self.lblAmount.setGeometry (QtCore.QRect (20, 46, 56, 17)) self.lblAmount.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblAmount.setObjectName (_fromUtf8 _fromUtf8 ("lbljectCan))) self.txtCode = QtGui.QLineEdit (self.centralwidget) self.txtCode.setGeometry (QtCore.QRect (90, 10, 113, 27)) self.txtCodigo.setObjectName (_fromUtf8" ) self.txtPrice = QtGui.QLineEdit (self.centralwidget) self.txtPrice.setGeometry (QtCore.QRect (340, 40, 113, 27)) self.txtPrice.setObjectName (_fromUtf8 ("txtPrice")) self.txtQuantity = .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 ("line")) self.btSave = QtGui.QPushButton (self.centralwCryt) .btCoretry (QtGetry) .QRect (140, 80, 91, 27)) self.btSave.setMinimumSize (QtCore.QSize (91, 0)) self.btSave.setObjectName (_fromUtf8 ("btSave")) self.btUp .QPush .Button (self. Centralwidget) self.btUpdate.setGeometry (QtCore.QRect (250, 80, 101, 27)) self.btUpdate.setMinimumSize (QtCore.QSize (101, 0)) self.btUpdate.setObjectName (") 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.setO ("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. 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 ("menubardus) (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("статусбар")) : UIProducts.setWindowTitle (_translate ("UIProducts", "Product List", None)) self.lblCodigo.setText (_translate ("U IProducts "," Code ", None)) self.lblPrice.setText (_translate (" IProducts "," Price ", None)) self.lblQuantity.setText (_translate (" UIProducts "," Количество ", Няма)) self. btSave.setText (_translate ("UIProducts", "Save", None)) self.btUpdate.setText (_translate ("UIProducts", "Update List", None)) self.label.setText (_translate ("UIProducts", " Списък на продуктите ", Няма)) self.lblProducto.setText (_translate (" UIProductos "," Продукт ", Няма)) self.tableWidget.setSortingEnabled (True)След това ще създадем друг файл за функционалността на дизайна, дефинирана в предишната:
от PyQt4 импортиране QtCore от PyQt4 импортиране QtGui от PyQt4.QtCore импортиране * от PyQt4.QtGui импортиране * от списък с продукти импортиране Ui_FrmProducts импортиране sqlite3 импортиране на sys клас FrmProducts (QtGui.QMainWindow): def __init __ (__. (самостоятелно, родител) Стартиране на базата данни () self.conn = Няма self.cursor = Няма # Стартираме базата данни и създаваме таблицата, ако тя не съществува. = self .conn.cursor () cursor.execute ("" "СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВАТ продукти ): conn = sqlite3.connect ("dbproducts.bd") курсор = 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. количество, собствена цена) cursor.execute ("INSERT INTO продукти (код, продукт, количество, цена) СТОЙНОСТИ? setText ("") conn.commit () QMessageBox.about (self, "Записът е запазен", "Забележка") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") курсор = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # Посочените данни се зареждат от таблицата cursor.execute ("SELECT код, продукт, количество, цена ОТ продукти") 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.number of rows = len (table_info) self.ui.tableWidget.setRowCount (self_ui.tableWidget.setRowCount numberoffi редове [0принт)] за j в обхват (самостоятелен брой редове): ред = table_info [j] печат j за i в обхват (0, len (ред)): item = ред [i] печат елемент item = str (елемент) newitem = QTableWidgetItem (елемент) self.ui.tableWidget.setItem (j, i , newitem) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) myapp = FrmProducts () myapp.show () sys.exit (app.exec_ ())Резултатът при изпълнение на кода ще бъде следният: