You are on page 1of 10

1 import sys,os

2 from PyQt5.QtWidgets import *


3 from PyQt5.QtGui import *
4 from PyQt5.QtCore import Qt
5 import sqlite3
6 import addproduct,addmember,sellings,style
7 from PIL import Image
8
9 con=sqlite3.connect("products.db")
10 cur=con.cursor()
11
12
13 #pyqt python
14 class Main(QMainWindow):
15 def __init__(self):
16 super().__init__()
17 self.setWindowTitle("Product Manager")
18 self.setWindowIcon(QIcon('icons/icon.ico'))
19 self.setGeometry(450,150,1350,750)
20 self.setFixedSize(self.size())
21
22 self.UI()
23 self.show()
24 def toolBar(self):
25 self.tb=self.addToolBar("Tool Bar")
26 self.tb.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
27 #####################Toolbar Buttons############
28 ####################Add Product################
29 self.addProduct=QAction(QIcon('icons/add.png'),"Add Product",self)
30 self.tb.addAction(self.addProduct)
31 self.addProduct.triggered.connect(self.funcAddProduct)
32 self.tb.addSeparator()
33 ######################Add Member################
34 self.addMember=QAction(QIcon('icons/users.png'),"Add Member",self)
35 self.tb.addAction(self.addMember)
36 self.addMember.triggered.connect(self.funcAddMember)
37 self.tb.addSeparator()
38 ######################Sell Products###############
39 self.sellProduct = QAction(QIcon('icons/sell.png'),"Sell Product",self)
40 self.tb.addAction(self.sellProduct)
41 self.sellProduct.triggered.connect(self.funcSellProducts)
42 self.tb.addSeparator()
43
44
45
46
47
48 def tabWigdet(self):
49 self.tabs=QTabWidget()
50 self.tabs.blockSignals(True)
51 self.tabs.currentChanged.connect(self.tabChanged)
52 self.setCentralWidget(self.tabs)
53 self.tab1=QWidget()
54 self.tab2=QWidget()
55 self.tab3=QWidget()
56 self.tabs.addTab(self.tab1,"Products")
57 self.tabs.addTab(self.tab2,"Members")
58 self.tabs.addTab(self.tab3,"Statistics")
59 def UI(self):
60 self.toolBar()
61 self.tabWigdet()
62 self.widgets()
63 self.layouts()
64 self.displayProducts()
65 self.displayMembers()
66 self.getStatistics()
67
68
69 def widgets(self):
70 #######################Tab1 Widgets###############
71 ####################Main left layout widget##########
72 self.productsTable = QTableWidget()
73 self.productsTable.setColumnCount(6)
74 self.productsTable.setColumnHidden(0,True)
75 self.productsTable.setHorizontalHeaderItem(0,QTableWidgetItem("Product Id"))
76 self.productsTable.setHorizontalHeaderItem(1,QTableWidgetItem("Product Name"))
77 self.productsTable.setHorizontalHeaderItem(2,QTableWidgetItem("Manufacturer"))
78 self.productsTable.setHorizontalHeaderItem(3,QTableWidgetItem("Price"))
79 self.productsTable.setHorizontalHeaderItem(4,QTableWidgetItem("Qouta"))
80 self.productsTable.setHorizontalHeaderItem(5,QTableWidgetItem("Availbility"))
81 self.productsTable.horizontalHeader().setSectionResizeMode(1,QHeaderView.Stretch)
82 self.productsTable.horizontalHeader().setSectionResizeMode(2,QHeaderView.Stretch)
83 self.productsTable.doubleClicked.connect(self.selectedProduct)
84
85
86 ########################Right top layout widgets#######################
87 self.searchText=QLabel("Search")
88 self.searchEntry=QLineEdit()
89 self.searchEntry.setPlaceholderText("Search For Products")
90 self.searchButton=QPushButton("Search")
91 self.searchButton.clicked.connect(self.searchProducts)
92 self.searchButton.setStyleSheet(style.searchButtonStyle())
93 ##########################Right middle layout widgets###########
94 self.allProducts=QRadioButton("All Products")
95 self.avaialableProducts=QRadioButton("Available")
96 self.notAvaialableProducts=QRadioButton("Not Available")
97 self.listButton=QPushButton("List")
98 self.listButton.clicked.connect(self.listProducts)
99 self.listButton.setStyleSheet(style.listButtonStyle())
100 ########################Tab2 Widgets#########################
101 self.membersTable=QTableWidget()
102 self.membersTable.setColumnCount(4)
103 self.membersTable.setHorizontalHeaderItem(0,QTableWidgetItem("Member ID"))
104 self.membersTable.setHorizontalHeaderItem(1,QTableWidgetItem("Member Name"))
105 self.membersTable.setHorizontalHeaderItem(2,QTableWidgetItem("Member Surname"))
106 self.membersTable.setHorizontalHeaderItem(3,QTableWidgetItem("Phone"))
107 self.membersTable.horizontalHeader().setSectionResizeMode(1,QHeaderView.Stretch)
108 self.membersTable.horizontalHeader().setSectionResizeMode(2,QHeaderView.Stretch)
109 self.membersTable.horizontalHeader().setSectionResizeMode(3,QHeaderView.Stretch)
110 self.membersTable.doubleClicked.connect(self.selectedMember)
111 self.memberSearchText=QLabel("Search Members")
112 self.memberSearchEntry=QLineEdit()
113 self.memberSearchButton=QPushButton("Search")
114 self.memberSearchButton.clicked.connect(self.searchMembers)
115 ##########################Tab3 widgets#####################
116 self.totalProductsLabel=QLabel()
117 self.totalMemberLabel=QLabel()
118 self.soldProductsLabel=QLabel()
119 self.totalAmountLabel=QLabel()
120
121
122
123
124
125 def layouts(self):
126 ######################Tab1 layouts##############
127 self.mainLayout=QHBoxLayout()
128 self.mainLeftLayout=QVBoxLayout()
129 self.mainRightLayout=QVBoxLayout()
130 self.rightTopLayout=QHBoxLayout()
131 self.rightMiddleLayout=QHBoxLayout()
132 self.topGroupBox=QGroupBox("Search Box")
133 self.topGroupBox.setStyleSheet(style.searchBoxStyle())
134 self.middleGroupBox=QGroupBox("List Box")
135 self.middleGroupBox.setStyleSheet(style.listBoxStyle())
136 self.bottomGroupBox=QGroupBox()
137 #################Add widgets###################
138 ################Left main layout widget###########
139 self.mainLeftLayout.addWidget(self.productsTable)
140 ########################Right top layout widgets#########
141 self.rightTopLayout.addWidget(self.searchText)
142 self.rightTopLayout.addWidget(self.searchEntry)
143 self.rightTopLayout.addWidget(self.searchButton)
144 self.topGroupBox.setLayout(self.rightTopLayout)
145 #################Right middle layout widgets##########
146 self.rightMiddleLayout.addWidget(self.allProducts)
147 self.rightMiddleLayout.addWidget(self.avaialableProducts)
148 self.rightMiddleLayout.addWidget(self.notAvaialableProducts)
149 self.rightMiddleLayout.addWidget(self.listButton)
150 self.middleGroupBox.setLayout(self.rightMiddleLayout)
151
152 self.mainRightLayout.addWidget(self.topGroupBox,20)
153 self.mainRightLayout.addWidget(self.middleGroupBox,20)
154 self.mainRightLayout.addWidget(self.bottomGroupBox,60)
155 self.mainLayout.addLayout(self.mainLeftLayout,70)
156 self.mainLayout.addLayout(self.mainRightLayout,30)
157 self.tab1.setLayout(self.mainLayout)
158 ######################Tab2 Layouts#####################
159 self.memberMainLayout=QHBoxLayout()
160 self.memberLeftLayout=QHBoxLayout()
161 self.memberRightLayout=QHBoxLayout()
162 self.memberRightGroupBox=QGroupBox("Search For Members")
163 self.memberRightGroupBox.setContentsMargins(10,10,10,600)
164 self.memberRightLayout.addWidget(self.memberSearchText)
165 self.memberRightLayout.addWidget(self.memberSearchEntry)
166 self.memberRightLayout.addWidget(self.memberSearchButton)
167 self.memberRightGroupBox.setLayout(self.memberRightLayout)
168
169 self.memberLeftLayout.addWidget(self.membersTable)
170 self.memberMainLayout.addLayout(self.memberLeftLayout,70)
171 self.memberMainLayout.addWidget(self.memberRightGroupBox,30)
172 self.tab2.setLayout(self.memberMainLayout)
173
174 #####################Tab3 layouts########################
175 self.statisticsMainLayout=QVBoxLayout()
176 self.statisticsLayout=QFormLayout()
177 self.statisticsGroupBox=QGroupBox("Statistics")
178 self.statisticsLayout.addRow("Total Products:",self.totalProductsLabel)
179 self.statisticsLayout.addRow("Total Member:",self.totalMemberLabel)
180 self.statisticsLayout.addRow("Sold Products:",self.soldProductsLabel)
181 self.statisticsLayout.addRow("Total Amount:",self.totalAmountLabel)
182
183 self.statisticsGroupBox.setLayout(self.statisticsLayout)
184 self.statisticsGroupBox.setFont(QFont("Arial",20))
185 self.statisticsMainLayout.addWidget(self.statisticsGroupBox)
186 self.tab3.setLayout(self.statisticsMainLayout)
187 self.tabs.blockSignals(False)
188 def displayProducts(self):
189 self.productsTable.setFont(QFont("Times",12))
190 for i in reversed(range(self.productsTable.rowCount())):
191 self.productsTable.removeRow(i)
192
193 query = cur.execute("SELECT
product_id,product_name,product_manufacturer,product_price,product_qouta,product_
availability FROM products")
194 for row_data in query:
195 row_number = self.productsTable.rowCount()
196 self.productsTable.insertRow(row_number)
197 for column_number, data in enumerate(row_data):
198
self.productsTable.setItem(row_number,column_number,QTableWidgetItem(str(
data)))
199
200 self.productsTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
201
202
203
204 def funcAddProduct(self):
205 self.newProduct=addproduct.AddProduct()
206
207 def funcAddMember(self):
208 self.newMember=addmember.AddMember()
209
210
211
212
213 def displayMembers(self):
214 self.membersTable.setFont(QFont("Times",12))
215 for i in reversed(range(self.membersTable.rowCount())):
216 self.membersTable.removeRow(i)
217
218 members=cur.execute("SELECT * FROM members")
219 for row_data in members:
220 row_number = self.membersTable.rowCount()
221 self.membersTable.insertRow(row_number)
222 for column_number, data in enumerate(row_data):
223
self.membersTable.setItem(row_number,column_number,QTableWidgetItem(str(d
ata)))
224
225 self.membersTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
226
227
228 def selectedProduct(self):
229 global productId
230 listProduct=[]
231 for i in range(0,6):
232
listProduct.append(self.productsTable.item(self.productsTable.currentRow(),i)
.text())
233
234 productId=listProduct[0]
235 self.display=DisplayProduct()
236 self.display.show()
237
238 def selectedMember(self):
239 global memberId
240 listMember=[]
241 for i in range(0,4):
242
listMember.append(self.membersTable.item(self.membersTable.currentRow(),i).te
xt())
243
244 memberId=listMember[0]
245 self.displayMember=DisplayMember()
246 self.displayMember.show()
247
248 def searchProducts(self):
249 value=self.searchEntry.text()
250 if value == "":
251 QMessageBox.information(self,"Warning","Search query cant be empty!!!")
252
253 else:
254 self.searchEntry.setText("")
255
256 query=("SELECT
product_id,product_name,product_manufacturer,product_price,product_qouta,prod
uct_availability FROM products WHERE product_name LIKE ? or
product_manufacturer LIKE ?")
257 results=cur.execute(query,('%' + value + '%','%' + value + '%')).fetchall()
258 print(results)
259
260 if results == []:
261 QMessageBox.information(self,"Warning","There is no such a product or
manufacturer")
262
263 else:
264 for i in reversed(range(self.productsTable.rowCount())):
265 self.productsTable.removeRow(i)
266
267 for row_data in results:
268 row_number = self.productsTable.rowCount()
269 self.productsTable.insertRow(row_number)
270 for column_number, data in enumerate(row_data):
271
self.productsTable.setItem(row_number,column_number,QTableWidgetI
tem(str(data)))
272
273 def searchMembers(self):
274 value = self.memberSearchEntry.text()
275 if value == "":
276 QMessageBox.information(self,"Warning","Search query can not be empty")
277
278 else:
279 self.memberSearchEntry.setText("")
280 query=("SELECT * FROM members WHERE member_name LIKE ? or member_surname
LIKE ? or member_phone LIKE ?")
281 results=cur.execute(query,('%' + value + '%', '%' + value + '%', '%' +
value + '%')).fetchall()
282 if results == []:
283 QMessageBox.information(self,"Warning","There is no such a member")
284 else:
285 for i in reversed(range(self.membersTable.rowCount())):
286 self.membersTable.removeRow(i)
287
288 for row_data in results:
289 row_number = self.membersTable.rowCount()
290 self.membersTable.insertRow(row_number)
291 for column_number, data in enumerate(row_data):
292 self.membersTable.setItem(row_number, column_number,
QTableWidgetItem(str(data)))
293
294
295
296 def listProducts(self):
297 if self.allProducts.isChecked() == True:
298 self.displayProducts()
299
300 elif self.avaialableProducts.isChecked():
301 query=("SELECT
product_id,product_name,product_manufacturer,product_price,product_qouta,"
302 "product_availability FROM products WHERE
product_availability='Available'")
303 products=cur.execute(query).fetchall()
304 print(products)
305
306 for i in reversed(range(self.productsTable.rowCount())):
307 self.productsTable.removeRow(i)
308
309 for row_data in products:
310 row_number = self.productsTable.rowCount()
311 self.productsTable.insertRow(row_number)
312 for column_number, data in enumerate(row_data):
313 self.productsTable.setItem(row_number, column_number,
QTableWidgetItem(str(data)))
314
315 elif self.notAvaialableProducts.isChecked():
316 query = ("SELECT
product_id,product_name,product_manufacturer,product_price,product_qouta,"
317 "product_availability FROM products WHERE
product_availability='UnAvailable'")
318 products = cur.execute(query).fetchall()
319 print(products)
320
321 for i in reversed(range(self.productsTable.rowCount())):
322 self.productsTable.removeRow(i)
323
324 for row_data in products:
325 row_number = self.productsTable.rowCount()
326 self.productsTable.insertRow(row_number)
327 for column_number, data in enumerate(row_data):
328 self.productsTable.setItem(row_number, column_number,
QTableWidgetItem(str(data)))
329
330
331 def funcSellProducts(self):
332 self.sell = sellings.SellProducts()
333
334
335 def getStatistics(self):
336 countProducts=cur.execute("SELECT count(product_id) FROM products").fetchall()
337 countMembers = cur.execute("SELECT count(member_id) FROM members").fetchall()
338 soldProducts = cur.execute("SELECT SUM(selling_quantity) FROM
sellings").fetchall()
339 totalAmount = cur.execute("SELECT SUM(selling_amount) FROM sellings").fetchall()
340 totalAmount = totalAmount[0][0]
341 soldProducts = soldProducts[0][0]
342 countMembers = countMembers[0][0]
343 countProducts = countProducts[0][0]
344 self.totalProductsLabel.setText(str(countProducts))
345 self.totalMemberLabel.setText(str(countMembers))
346 self.soldProductsLabel.setText(str(soldProducts))
347 self.totalAmountLabel.setText(str(totalAmount)+" $")
348
349 def tabChanged(self):
350 self.getStatistics()
351 self.displayProducts()
352 self.displayMembers()
353
354
355
356 class DisplayMember(QWidget):
357 def __init__(self):
358 super().__init__()
359 self.setWindowTitle("Member Details")
360 self.setWindowIcon(QIcon('icons/icon.ico'))
361 self.setGeometry(450,150,350,600)
362 self.setFixedSize(self.size())
363 self.UI()
364 self.show()
365
366 def UI(self):
367 self.memberDetails()
368 self.widgets()
369 self.layouts()
370
371
372 def memberDetails(self):
373 global memberId
374 query=("SELECT * FROM members WHERE member_id=?")
375 member=cur.execute(query,(memberId,)).fetchone()
376 self.memberName=member[1]
377 self.memberSurname=member[2]
378 self.memberPhone=member[3]
379
380 def widgets(self):
381 ###############Widgets of top layout############
382 self.memberImg=QLabel()
383 self.img=QPixmap('icons/members.png')
384 self.memberImg.setPixmap(self.img)
385 self.memberImg.setAlignment(Qt.AlignCenter)
386 self.titleText=QLabel("Display Member")
387 self.titleText.setAlignment(Qt.AlignCenter)
388 ###################widgets of bottom layout#########
389 self.nameEntry=QLineEdit()
390 self.nameEntry.setText(self.memberName)
391 self.surnameEntry=QLineEdit()
392 self.surnameEntry.setText(self.memberSurname)
393 self.phoneEntry=QLineEdit()
394 self.phoneEntry.setText(self.memberPhone)
395 self.updateBtn=QPushButton("Update")
396 self.updateBtn.clicked.connect(self.updateMember)
397 self.deleteBtn=QPushButton("Delete")
398 self.deleteBtn.clicked.connect(self.deleteMember)
399
400
401
402 def layouts(self):
403 self.mainLayout=QVBoxLayout()
404 self.topLayout=QVBoxLayout()
405 self.bottomLayout=QFormLayout()
406 self.topFrame=QFrame()
407 self.topFrame.setStyleSheet(style.memberTopFrame())
408 self.bottomFrame=QFrame()
409 self.bottomFrame.setStyleSheet(style.memberBottomFrame())
410 ##############add widgets######3
411 self.topLayout.addWidget(self.titleText)
412 self.topLayout.addWidget(self.memberImg)
413 self.topFrame.setLayout(self.topLayout)
414
415 self.bottomLayout.addRow(QLabel("Name: "),self.nameEntry)
416 self.bottomLayout.addRow(QLabel("Surname: "),self.surnameEntry)
417 self.bottomLayout.addRow(QLabel("Phone: "),self.phoneEntry)
418 self.bottomLayout.addRow(QLabel(""),self.updateBtn)
419 self.bottomLayout.addRow(QLabel(""),self.deleteBtn)
420 self.bottomFrame.setLayout(self.bottomLayout)
421
422 self.mainLayout.addWidget(self.topFrame)
423 self.mainLayout.addWidget(self.bottomFrame)
424 self.setLayout(self.mainLayout)
425
426
427 def deleteMember(self):
428 global memberId
429 mbox=QMessageBox.question(self,"Warning","Are you sure to delete this
member",QMessageBox.Yes|QMessageBox.No,QMessageBox.No)
430
431 if mbox == QMessageBox.Yes:
432 try:
433 query="DELETE FROM members WHERE member_id=?"
434 cur.execute(query,(memberId,))
435 con.commit()
436 QMessageBox.information(self,"Info","Member has been deleted!")
437 except:
438 QMessageBox.information(self,"Info","Member has not been deleted!")
439
440
441 def updateMember(self):
442 global memberId
443 name = self.nameEntry.text()
444 surname = self.surnameEntry.text()
445 phone = self.phoneEntry.text()
446
447 if (name and surname and phone !=""):
448 try:
449 query="UPDATE members set member_name=?, member_surname=?,
member_phone=? WHERE member_id=?"
450 cur.execute(query,(name,surname,phone,memberId))
451 con.commit()
452 QMessageBox.information(self,"Info","Member has been updated!")
453
454 except:
455 QMessageBox.information(self,"Info","Member has been updated!")
456
457 else:
458 QMessageBox.information(self, "Info", "Fields can not be empty!")
459
460 class DisplayProduct(QWidget):
461 def __init__(self):
462 super().__init__()
463 self.setWindowTitle("Product Details")
464 self.setWindowIcon(QIcon('icons/icon.ico'))
465 self.setGeometry(450,150,350,600)
466 self.setFixedSize(self.size())
467 self.UI()
468 self.show()
469
470 def UI(self):
471 self.productDetails()
472 self.widgets()
473 self.layouts()
474
475
476 def productDetails(self):
477 global productId
478 query=("SELECT * FROM products WHERE product_id=?")
479 product=cur.execute(query,(productId,)).fetchone()#single item tuple=(1,)
480 self.productName=product[1]
481 self.productManufacturer=product[2]
482 self.productPrice=product[3]
483 self.productQouta=product[4]
484 self.productImg=product[5]
485 self.productStatus=product[6]
486
487 def widgets(self):
488 #################Top layouts wigdets#########
489 self.product_Img=QLabel()
490 self.img=QPixmap('img/{}'.format(self.productImg))
491 self.product_Img.setPixmap(self.img)
492 self.product_Img.setAlignment(Qt.AlignCenter)
493 self.titleText=QLabel("Update Product")
494 self.titleText.setAlignment(Qt.AlignCenter)
495
496 ##############Bottom Layout's widgets###########
497 self.nameEntry=QLineEdit()
498 self.nameEntry.setText(self.productName)
499 self.manufacturerEntry=QLineEdit()
500 self.manufacturerEntry.setText(self.productManufacturer)
501 self.priceEntry=QLineEdit()
502 self.priceEntry.setText(str(self.productPrice))
503 self.qoutaEntry=QLineEdit()
504 self.qoutaEntry.setText(str(self.productQouta))
505 self.availabilityCombo=QComboBox()
506 self.availabilityCombo.addItems(["Available","UnAvailable"])
507 self.uploadBtn=QPushButton("Upload")
508 self.uploadBtn.clicked.connect(self.uploadImg)
509 self.deleteBtn=QPushButton("Delete")
510 self.deleteBtn.clicked.connect(self.deleteProduct)
511 self.updateBtn=QPushButton("Update")
512 self.updateBtn.clicked.connect(self.updateProduct)
513
514
515
516
517 def layouts(self):
518 self.mainLayout=QVBoxLayout()
519 self.topLayout=QVBoxLayout()
520 self.bottomLayout=QFormLayout()
521 self.topFrame=QFrame()
522 self.topFrame.setStyleSheet(style.productTopFrame())
523 self.bottomFrame=QFrame()
524 self.bottomFrame.setStyleSheet(style.productBottomFrame())
525 ###############add widgets###########
526 self.topLayout.addWidget(self.titleText)
527 self.topLayout.addWidget(self.product_Img)
528 self.topFrame.setLayout(self.topLayout)
529 self.bottomLayout.addRow(QLabel("Name: "),self.nameEntry)
530 self.bottomLayout.addRow(QLabel("Manufacturer: "),self.manufacturerEntry)
531 self.bottomLayout.addRow(QLabel("Price: "),self.priceEntry)
532 self.bottomLayout.addRow(QLabel("Qouta: "),self.qoutaEntry)
533 self.bottomLayout.addRow(QLabel("Status: "),self.availabilityCombo)
534 self.bottomLayout.addRow(QLabel("Image: "),self.uploadBtn)
535 self.bottomLayout.addRow(QLabel(""),self.deleteBtn)
536 self.bottomLayout.addRow(QLabel(""),self.updateBtn)
537 self.bottomFrame.setLayout(self.bottomLayout)
538 self.mainLayout.addWidget(self.topFrame)
539 self.mainLayout.addWidget(self.bottomFrame)
540
541
542 self.setLayout(self.mainLayout)
543
544
545
546 def uploadImg(self):
547 size =(256,256)
548 self.filename,ok =QFileDialog.getOpenFileName(self,'Upload Image','','Image
files (*.jpg *.png)')
549 if ok:
550 self.productImg = os.path.basename(self.filename)
551 img=Image.open(self.filename)
552 img=img.resize(size)
553 img.save("img/{0}".format(self.productImg))
554
555 def updateProduct(self):
556 global productId
557 name = self.nameEntry.text()
558 manufacturer=self.manufacturerEntry.text()
559 price=int(self.priceEntry.text())
560 qouta=int(self.qoutaEntry.text())
561 status=self.availabilityCombo.currentText()
562 defaultImg=self.productImg
563
564 if (name and manufacturer and price and qouta !=""):
565
566 try:
567 query="UPDATE products set product_name=?, product_manufacturer =?,
product_price=?,product_qouta=?, product_img=?, product_availability=?
WHERE product_id=?"
568
cur.execute(query,(name,manufacturer,price,qouta,defaultImg,status,produc
tId))
569 con.commit()
570 QMessageBox.information(self,"Info","Product has been updated!")
571 except:
572 QMessageBox.information(self, "Info", "Product has not been updated!")
573 else:
574 QMessageBox.information(self, "Info", "Fields cant be empty!")
575
576 def deleteProduct(self):
577 global productId
578
579 mbox=QMessageBox.question(self,"Warning","Are you sure to delete this
product",QMessageBox.Yes | QMessageBox.No,QMessageBox.No)
580
581 if(mbox==QMessageBox.Yes):
582 try:
583 cur.execute("DELETE FROM products WHERE product_id=?",(productId,))
584 con.commit()
585 QMessageBox.information(self,"Information","Product has been deleted!")
586 self.close()
587
588 except:
589 QMessageBox.information(self, "Information", "Product has not been
deleted!")
590
591
592 def main():
593 App=QApplication(sys.argv)
594 window = Main()
595 sys.exit(App.exec_())
596
597 if __name__ == '__main__':
598 main()

You might also like