Skip to content

Instantly share code, notes, and snippets.

@ardzz
Last active December 7, 2022 03:53
Show Gist options
  • Save ardzz/900167f5236b6d540769d1eb62087b5a to your computer and use it in GitHub Desktop.
Save ardzz/900167f5236b6d540769d1eb62087b5a to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'crud.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
"""
author: Naufal Reky Ardhana
nim: 4.33.22.0.21
class: TI-1A
"""
from PyQt5 import QtCore, QtWidgets
import pymysql
from PyQt5.QtWidgets import QMessageBox
class database:
"""
CREATE TABLE `peoples` (
`id` int NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`address` text NOT NULL,
`phone` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `peoples_phone_idx` (`phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
"""
def __init__(self):
self.db = pymysql.connect(db='job_sheet_9', user='root', password='', host='localhost')
self.cur = self.db.cursor()
def insert(self, first_name, last_name, address, phone):
try:
self.cur.execute("INSERT INTO peoples (first_name, last_name, address, phone) VALUES (%s, %s, %s, %s)",
(first_name, last_name, address, phone))
self.db.commit()
except pymysql.err.IntegrityError:
return False
self.cur.execute("SELECT `phone` FROM peoples WHERE `phone` = %s", (phone))
data = self.cur.fetchone()
if data:
return True
else:
return False
def update(self, first_name, last_name, address, phone):
self.cur.execute("UPDATE peoples SET first_name = %s, last_name = %s, address = %s WHERE phone = %s",
(first_name, last_name, address, phone))
self.db.commit()
return self.db.affected_rows()
def delete(self, phone):
self.cur.execute("DELETE FROM peoples WHERE `phone` = %s", (phone))
self.db.commit()
return self.db.affected_rows()
def view(self, phone):
self.cur.execute("SELECT * FROM peoples WHERE `phone` = %s", (phone))
data = self.cur.fetchone()
return data
class Ui_MainWindow(object):
def __init__(self):
self.checkButton = None
self.clearButton = None
self.deleteButton = None
self.updateButton = None
self.saveButton = None
self.label_5 = None
self.menubar = None
self.statusbar = None
self.label_4 = None
self.label_3 = None
self.label_2 = None
self.lineEdit_3 = None
self.lineEdit = None
self.label = None
self.centralwidget = None
self.lineEdit_2 = None
self.plainTextEdit = None
self.db = database()
@staticmethod
def show_message(message="you clicked the button", icon=QMessageBox.Icon.Information):
msg = QtWidgets.QMessageBox()
msg.setWindowTitle("title")
msg.setText(message)
msg.setIcon(icon)
msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
msg.exec_()
def view_people(self):
phone = self.lineEdit_3.text()
if phone:
data = self.db.view(phone)
if data:
self.lineEdit.setText(data[1])
self.lineEdit_2.setText(data[2])
self.plainTextEdit.setPlainText(data[3])
self.lineEdit_3.setText(data[4])
else:
self.show_message("Phone number not found", QMessageBox.Icon.Warning)
else:
self.show_message("Phone number is empty!", QMessageBox.Icon.Warning)
def save_people(self):
first_name = self.lineEdit.text()
last_name = self.lineEdit_2.text()
address = self.plainTextEdit.toPlainText()
phone = self.lineEdit_3.text()
if len(phone) == 0 | len(first_name) == 0 | len(last_name) == 0 | len(address) == 0:
self.show_message("Data is empty", QMessageBox.Icon.Warning)
elif self.db.insert(first_name, last_name, address, phone):
self.show_message("Data saved", QMessageBox.Icon.Information)
else:
self.show_message("Data not saved", QMessageBox.Icon.Warning)
def update_people(self):
first_name = self.lineEdit.text()
last_name = self.lineEdit_2.text()
address = self.plainTextEdit.toPlainText()
phone = self.lineEdit_3.text()
if self.db.update(first_name, last_name, address, phone):
self.show_message("Data updated", QMessageBox.Icon.Information)
else:
self.show_message("Data not updated", QMessageBox.Icon.Warning)
def clear(self):
self.lineEdit.setText("")
self.lineEdit_2.setText("")
self.plainTextEdit.setPlainText("")
self.lineEdit_3.setText("")
def delete_people(self):
phone = self.lineEdit_3.text()
if self.db.delete(phone):
self.show_message("Data deleted", QMessageBox.Icon.Information)
else:
self.show_message("Data not deleted", QMessageBox.Icon.Warning)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 572)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(240, 10, 351, 91))
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(290, 140, 291, 21))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(290, 180, 291, 21))
self.lineEdit_2.setObjectName("lineEdit_2")
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget)
self.plainTextEdit.setGeometry(QtCore.QRect(290, 220, 291, 79))
self.plainTextEdit.setObjectName("plainTextEdit")
self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_3.setGeometry(QtCore.QRect(290, 310, 291, 21))
self.lineEdit_3.setObjectName("lineEdit_3")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(169, 140, 71, 20))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(170, 180, 71, 20))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(170, 220, 71, 20))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(170, 310, 101, 20))
self.label_5.setObjectName("label_5")
self.saveButton = QtWidgets.QPushButton(self.centralwidget)
self.saveButton.setGeometry(QtCore.QRect(160, 370, 113, 32))
self.saveButton.setObjectName("pushButton")
self.saveButton.clicked.connect(self.save_people)
self.updateButton = QtWidgets.QPushButton(self.centralwidget)
self.updateButton.setGeometry(QtCore.QRect(320, 370, 113, 32))
self.updateButton.setObjectName("updateButton")
self.updateButton.clicked.connect(self.update_people)
self.deleteButton = QtWidgets.QPushButton(self.centralwidget)
self.deleteButton.setGeometry(QtCore.QRect(480, 370, 113, 32))
self.deleteButton.setObjectName("deleteButton")
self.deleteButton.clicked.connect(self.delete_people)
self.clearButton = QtWidgets.QPushButton(self.centralwidget)
self.clearButton.setGeometry(QtCore.QRect(160, 450, 191, 61))
self.clearButton.setObjectName("clearButton")
self.clearButton.clicked.connect(self.clear)
self.checkButton = QtWidgets.QPushButton(self.centralwidget)
self.checkButton.setGeometry(QtCore.QRect(400, 450, 191, 61))
self.checkButton.setObjectName("checkButton")
self.checkButton.clicked.connect(self.view_people)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 24))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Naufal Reky Ardhana: JS-9"))
self.label.setText(_translate("MainWindow",
"<html><head/><body><p><span style=\" font-size:48pt;\">Praktikum CRUD</span></p></body></html>"))
self.label_2.setText(_translate("MainWindow", "First Name"))
self.label_3.setText(_translate("MainWindow", "Last Name"))
self.label_4.setText(_translate("MainWindow", "Address"))
self.label_5.setText(_translate("MainWindow", "Phone Number"))
self.saveButton.setText(_translate("MainWindow", "Save"))
self.updateButton.setText(_translate("MainWindow", "Update"))
self.deleteButton.setText(_translate("MainWindow", "Delete"))
self.clearButton.setText(_translate("MainWindow", "Clear"))
self.checkButton.setText(_translate("MainWindow", "Check"))
if __name__ == "__main__":
import sys
import qdarktheme
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
# setup stylesheet
app.setStyleSheet(qdarktheme.load_stylesheet())
# run
MainWindow.show()
app.exec_()
sys.exit(app.exec_())
@ardzz
Copy link
Author

ardzz commented Dec 7, 2022

Screen Shot 2022-12-07 at 10 50 06
Screen Shot 2022-12-07 at 10 50 19
Screen Shot 2022-12-07 at 10 50 27
Screen Shot 2022-12-07 at 10 50 39
Screen Shot 2022-12-07 at 10 51 06

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment