Last active
December 7, 2022 03:53
-
-
Save ardzz/900167f5236b6d540769d1eb62087b5a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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_()) |
Author
ardzz
commented
Dec 7, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment