Database GUI Pada Python

Posted At: 28 Jun 2020 13:39:00

Setelah mempelajari modul ini diharapkan pembaca memahami konsep Database GUI pada bahasa pemrograman Python.

Pada bagian ini akan dicontohkan GUI untuk membuat database GUI dengan Python. Kode program berikut ini merupakan kode untuk membuat bagian database GUI.

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtSql import *


class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = "Hello Python"
        self.left = 100
        self.top = 100
        self.width = 800
        self.height = 600
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.mainMenu = self.menuBar()
        self.data = self.mainMenu.addMenu("Data")

        self.dataMahasiswa = QAction(QIcon(""), "Data Mahasiswa", self)
        self.dataMahasiswa.setStatusTip("Data Mahasiswa")
        self.dataMahasiswa.triggered.connect(self.DataMahasiswa)

        self.data.addAction(self.dataMahasiswa)

        self.statusBar().showMessage("Message in statusbar.")
        self.show()

    def DataMahasiswa(self):
        self.gui_data_mahasiswa = GUIDataMahasiswa()
        self.setCentralWidget(self.gui_data_mahasiswa)

class GUIDataMahasiswa(QWidget):
    def __init__(self):
        super().__init__()      
        self.model = QSqlTableModel()
        self.model.setTable('mahasiswa')
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model.select()
        self.model.setHeaderData(0, Qt.Horizontal, "ID");
        self.model.setHeaderData(1, Qt.Horizontal, "NIM");
        self.model.setHeaderData(2, Qt.Horizontal, "NAMA");
        self.model.setHeaderData(3, Qt.Horizontal, "UTS");
        self.model.setHeaderData(4, Qt.Horizontal, "UAS");
        self.setupUi()      
        
    def setupUi(self):
        self.resize(800, 600)
        self.move(300, 300)
        self.setWindowTitle('Demo QSqlTableModel')
        
        self.tableView = QTableView()
        self.tableView.setModel(self.model)
        
        self.addButton = QPushButton('Tambah')
        self.deleteButton = QPushButton('Hapus')    
        
        hbox = QHBoxLayout()
        hbox.addWidget(self.addButton)
        hbox.addWidget(self.deleteButton)
        hbox.addStretch()
        
        layout = QVBoxLayout()
        layout.addWidget(self.tableView)
        layout.addLayout(hbox)
        self.setLayout(layout)
        
        self.addButton.clicked.connect(self.addButtonClick)
        self.deleteButton.clicked.connect(self.deleteButtonClick)
            
    def addButtonClick(self):
        self.model.insertRows(self.model.rowCount(), 1)

    def deleteButtonClick(self):
        indexList = self.tableView.selectionModel().selection().indexes()
        for i in range(len(indexList)):
            index = indexList[i]
            row = index.row()
            self.model.removeRows(row, 1)
        self.model.select()

if __name__ == "__main__":
    app = QApplication(sys.argv)

    db = QSqlDatabase.addDatabase("QSQLITE")
    db.setDatabaseName("oop_sql.db")
    if not db.open():
        print("ERROR: " + db.lastError().text())
        sys.exit(1)

    ex = App()
    sys.exit(app.exec_())

Adapun keluaran dari program diatas seperti terlihat pada gambar berikut ini

Database GUI Pada Python

Database GUI Pada Python


Yulrio Brianorman
Blogger, pemiliki Onestring Lab, menulis artikel terkait teknologi informasi dan pendidikan. Web Developer, berpengalaman lebih dari 20 tahun mengembangkan berbagai aplikasi dan sistem informasi. Kerjasama : kontak saya.