-->

Aplikasi Buku Tamu Menggunakan PyQt5 dan MySQL

Post a Comment

Perkenalan

Dalam artikel ini, kita akan membahas sebuah aplikasi sederhana yang berfungsi sebagai Buku Tamu. Aplikasi ini dibangun menggunakan PyQt5 untuk antarmuka pengguna dan MySQL untuk penyimpanan data. Pengguna dapat memasukkan informasi seperti nama, nomor telepon, instansi, alamat, tanggal kunjungan, dan keperluan, yang kemudian disimpan ke dalam database.


Konsep Kunci

Aplikasi ini mengintegrasikan beberapa konsep penting:

  • PyQt5 : Sebuah toolkit untuk membuat antarmuka pengguna grafis (GUI) dengan Python.

  • MySQL : Sistem manajemen data dasar yang digunakan untuk menyimpan data pengguna.

  • Validasi Input : Digunakan QRegExpValidator untuk memastikan bahwa input nomor telepon hanya berisi angka.

  • Pengelolaan Koneksi Database : Menggunakan mysql.connector untuk menghubungkan dan berinteraksi dengan database MySQL.


Struktur Kode

Struktur kode aplikasi ini terdiri dari beberapa bagian utama:

  • Impor Modul : Mengimpor modul yang diperlukan untuk aplikasi.

  • KelasGuestBookApp : Kelas utama yang mengatur antarmuka pengguna dan koneksi database.

  • Metodedb_connection : Mengatur koneksi ke database MySQL.

  • MetodeinitUI : mengatur elemen-elemen antarmuka pengguna.

  • MetodesubmitEntry : menggabungkan pengiriman data ke database.

  • Bagian Eksekusi : memulai aplikasi jika skrip dijalankan sebagai program utama.

Contoh Kode

Berikut adalah penjelasan dari bagian-bagian penting dalam kode:

1. Mengimpor Modul


import sys

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QTextEdit, QPushButton, QDateTimeEdit

from PyQt5.QtCore import QRegExp, QDateTime

from PyQt5.QtGui import QRegExpValidator

import mysql.connector

from mysql.connector import Error


Di sini, kita mengimpor modul yang diperlukan untuk aplikasi, termasuk PyQt5 untuk GUI dan mysql.connector untuk koneksi database.

2. KelasGuestBookApp

class GuestBookApp(QWidget):

    def __init__(self):

        super().__init__()

        self.initUI()

        self.db_connection()


Kelas ini mewarisi dari QWidgetdan menginisialisasi antarmuka pengguna serta koneksi database saat objek dibuat.

3. Koneksi Database

def db_connection(self):

    try:

        self.conn = mysql.connector.connect(

            host='localhost',

            database='bukutamu',

            user='andi',

            password='sukaslamet',

            charset='utf8mb4',

            collation='utf8mb4_general_ci'

        )

        if self.conn.is_connected():

            print("Koneksi ke database berhasil.")

            self.cursor = self.conn.cursor()

    except Error as e:

        print(f"Kesalahan saat menghubungkan ke database: {e}")


Metode ini mencoba untuk menghubungkan ke database MySQL dan mencetak pesan jika koneksi berhasil.

4. Antarmuka Pengguna

def initUI(self):

    self.setWindowTitle('Buku Tamu')

    self.setGeometry(200, 200, 400, 600)

    layout = QVBoxLayout()

    ...

    self.submitButton.clicked.connect(self.submitEntry)

    ...

    self.setLayout(layout)


Metode ini mengatur judul jendela, ukuran, dan elemen-elemen antarmuka pengguna seperti label, input, dan tombol.

5. Mengirim Data ke Database


def submitEntry(self):

    nama = self.namaInput.text()

    NOHP = self.NOHPInput.text()

    ...

    sql = "INSERT INTO tamu (nama, no_hp, instansi, alamat, tanggal_kunjungan, keperluan) VALUES (%s, %s, %s, %s, %s, %s)"

    val = (nama, NOHP, Instansi, Alamat, TanggalKunjungan, Keperluan)

    self.cursor.execute(sql, val)

    self.conn.commit()


Metode ini mengambil data dari input pengguna dan menyimpannya ke dalam tabel tamudi database.


Kesimpulan


Aplikasi Buku Tamu ini merupakan contoh yang baik untuk memahami bagaimana mengintegrasikan PyQt5 dengan MySQL dalam sebuah aplikasi Python. Dengan antarmuka pengguna yang sederhana dan fungsionalitas yang jelas, aplikasi ini dapat dengan mudah dikembangkan lebih lanjut untuk memenuhi kebutuhan yang lebih kompleks. Anda dapat menggunakan kode ini sebagai dasar untuk proyek-proyek lain yang memerlukan interaksi dengan database.


Related Posts

Post a Comment

Subscribe Our Newsletter