Langsung ke konten utama

 Tolong perbaiki fungsi def display_selected_gugusan_nada(progres, mode): agar supaya dari data yang diambil dari tabel Gn'Biru memenuhi ketentuan berikut:

1.1. Jika id=1, progres 1 mode Naik, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2, di kolom Bass_3 data dari id 1 Bass_3.

1.2. Jika id=1 progres 2 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2, di kolom Bass_3 data dari id 1 Bass_3.

1.3. Jika id=1 progres 3 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2, di kolom Bass_3 data dari id 1 Bass_3.

1.4. Jika id=1, progres 1 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2.

1.5. Jika id=1 progres 2 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2.

1.6. Jika id=1 progres 3 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2.

2.1. Jika id=2, progres 1 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2.

2.2. Jika id=2 progres 2 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2.

2.3. Jika id=2 progres 3 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2.

2.4. Jika id=2, progres 1 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2.

2.5. Jika id=2 progres 2 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2.

2.6. Jika id=2 progres 3 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2.


3.1. Jika id=3, progres 1 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2.

2.2. Jika id=3 progres 2 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2.

2.3. Jika id=3 progres 3 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2.

2.4. Jika id=3, progres 1 mode Turun, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2, di kolom Bass_3 data dari id 3 Bass_3.

2.5. Jika id=3 progres 2 mode Turun, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2, di kolom Bass_3 data dari id 3 Bass_3.

2.6. Jika id=3 progres 3 mode Turun, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2, di kolom Bass_3 data dari id 3 Bass_3.


Bagaimana cara mengkaitkan data_gn_biru pada kode berikut ini:

import tkinter as tk

from tkinter import messagebox, ttk


# Data dummy untuk tabel Gn_Biru

data_gn_biru = {

    1: {"Bass_1": "B1_1", "Trebel_1": "T1_1", "Bass_2": "B2_1", "Trebel_2": "T2_1", "Bass_3": "B3_1"},

    2: {"Bass_1": "B1_2", "Trebel_1": "T1_2", "Bass_2": "B2_2", "Trebel_2": "T2_2", "Bass_3": "B3_2"},

    3: {"Bass_1": "B1_3", "Trebel_1": "T1_3", "Bass_2": "B2_3", "Trebel_2": "T2_3", "Bass_3": "B3_3"}

}


def pilih_nada():

    try:

        id_selected = int(entry_id.get())

        progres = int(progres_var.get())

        mode = mode_var.get().lower()


        # Hapus data sebelumnya di EntryBox

        entry_bass_1.delete(0, tk.END)

        entry_trebel_1.delete(0, tk.END)

        entry_bass_2.delete(0, tk.END)

        entry_trebel_2.delete(0, tk.END)

        entry_bass_3.delete(0, tk.END)

        

        # Logika pengisian data ke EntryBox berdasarkan tabel Gn_Biru

        if id_selected == 1:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[1]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[1]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[1]["Bass_2"])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[1]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[3]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[1]["Bass_2"])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[1]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[2]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[1]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[2]["Trebel_2"])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[1]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[1]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[1]["Bass_2"])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[1]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[2]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[1]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[2]["Trebel_2"])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[1]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[3]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[1]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[3]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[1]["Bass_3"])


        elif id_selected == 2:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[2]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[2]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[2]["Trebel_2"])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[1]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[2]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[1]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[2]["Bass_3"])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[3]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[2]["Bass_2"])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[2]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[2]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[2]["Trebel_2"])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[3]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[2]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[3]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[2]["Bass_3"])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[1]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[2]["Bass_2"])


        elif id_selected == 3:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[3]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[3]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[3]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[3]["Trebel_2"])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[3]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[2]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[3]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[2]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[3]["Bass_3"])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[3]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[1]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[3]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[1]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[3]["Bass_3"])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[3]["Bass_1"])           

                entry_trebel_1.insert(0, data_gn_biru[3]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[3]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[3]["Trebel_2"])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[3]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[1]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[3]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[1]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[3]["Bass_3"])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[3]["Bass_1"])

                entry_trebel_1.insert(0, data_gn_biru[2]["Trebel_1"])

                entry_bass_2.insert(0, data_gn_biru[3]["Bass_2"])

                entry_trebel_2.insert(0, data_gn_biru[2]["Trebel_2"])

                entry_bass_3.insert(0, data_gn_biru[3]["Bass_3"])    

        else:

            messagebox.showerror("Error", "ID tidak valid atau tidak ditemukan")


    except ValueError:

        messagebox.showerror("Error", "Masukkan nilai numerik yang valid untuk ID dan progres")


# GUI setup

root = tk.Tk()

root.title("Pilihan Nada")


frame = ttk.Frame(root, padding="10")

frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))


# Entry for ID

ttk.Label(frame, text="ID:").grid(row=0, column=0, sticky=tk.W)

entry_id = ttk.Entry(frame)

entry_id.grid(row=0, column=1, sticky=(tk.W, tk.E))


# Entry for progres

ttk.Label(frame, text="Progres:").grid(row=1, column=0, sticky=tk.W)

progres_var = ttk.Combobox(frame, values=[1, 2, 3])

progres_var.grid(row=1, column=1, sticky=(tk.W, tk.E))


# Entry for mode

ttk.Label(frame, text="Mode:").grid(row=2, column=0, sticky=tk.W)

mode_var = ttk.Combobox(frame, values=["naik", "turun"])

mode_var.grid(row=2, column=1, sticky=(tk.W, tk.E))


# Entry boxes for bass and trebel

ttk.Label(frame, text="Bass 1:").grid(row=3, column=0, sticky=tk.W)

entry_bass_1 = ttk.Entry(frame)

entry_bass_1.grid(row=3, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Trebel 1:").grid(row=4, column=0, sticky=tk.W)

entry_trebel_1 = ttk.Entry(frame)

entry_trebel_1.grid(row=4, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Bass 2:").grid(row=5, column=0, sticky=tk.W)

entry_bass_2 = ttk.Entry(frame)

entry_bass_2.grid(row=5, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Trebel 2:").grid(row=6, column=0, sticky=tk.W)

entry_trebel_2 = ttk.Entry(frame)

entry_trebel_2.grid(row=6, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Bass 3:").grid(row=7, column=0, sticky=tk.W)

entry_bass_3 = ttk.Entry(frame)

entry_bass_3.grid(row=7, column=1, sticky=(tk.W, tk.E))


# Button to trigger the selection

ttk.Button(frame, text="Pilih Nada", command=pilih_nada).grid(row=9, column=0, columnspan=2)


root.mainloop()


Agar supaya menggunakan data yang ditampilkan dari kode isi file DATA_Gn_Biru.py berikut:

 import tkinter as tk

from tkinter import ttk

import sqlite3

from tkinter import messagebox


# Initialize the main window

root = tk.Tk()

root.geometry("690x1390")

root.title("Arah Arus Musik Gn_Biru")


main_frame = tk.Frame(root)

main_frame.pack(fill=tk.BOTH, expand=1)


canvas = tk.Canvas(main_frame)

canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)


scrollbar_y = ttk.Scrollbar(main_frame, orient=tk.VERTICAL, command=canvas.yview)

scrollbar_y.pack(side=tk.RIGHT, fill=tk.Y)


scrollbar_x = ttk.Scrollbar(root, orient=tk.HORIZONTAL, command=canvas.xview)

scrollbar_x.pack(side=tk.BOTTOM, fill=tk.X)


canvas.configure(yscrollcommand=scrollbar_y.set, xscrollcommand=scrollbar_x.set)

canvas.bind('<Configure>', lambda e: canvas.configure(scrollregion=canvas.bbox("all")))


content_frame = tk.Frame(canvas)

canvas.create_window((0, 0), window=content_frame, anchor="nw")


data_frame = tk.Frame(content_frame)

data_frame.grid(row=0, column=0, padx=10, pady=10)


def create_database():

    conn = sqlite3.connect("DATAMUSIK.db")

    c = conn.cursor()

    c.execute('''CREATE TABLE IF NOT EXISTS Gn_Biru

                 (ID INTEGER PRIMARY KEY,

                 Level TEXT,

                 Bass_1 REAL,

                 Trebel_1 REAL,

                 Bass_2 REAL,

                 Trebel_2 REAL,

                 Bass_3 REAL)''')

    conn.commit()

    conn.close()


# Fungsi CRUD untuk Gn_Biru

def create_gn_biru_record(row):

    conn = sqlite3.connect('DATAMUSIK.db')

    c = conn.cursor()

    try:

        c.execute("INSERT INTO Gn_Biru (ID, Level, Bass_1, Trebel_1, Bass_2, Trebel_2, Bass_3) VALUES (?, ?, ?, ?, ?, ?, ?)",

                  (row[0].get(), row[1].get(), row[2].get(), row[3].get(), row[4].get(), row[5].get(), row[6].get()))

        conn.commit()

    except Exception as e:

        print(f"Error inserting record: {e}")

    finally:

        conn.close()

    clear_entries_gn_biru(row)

    display_records()


def read_gn_biru_record(row):

    conn = sqlite3.connect('DATAMUSIK.db')

    c = conn.cursor()

    try:

        c.execute("SELECT * FROM Gn_Biru WHERE ID = ?", (row[0].get(),))

        record = c.fetchone()

        if record:

            for col, value in enumerate(record):

                row[col].delete(0, tk.END)

                row[col].insert(0, int(value) if isinstance(value, float) else value)

        else:

            print(f"No record found for ID {row[0].get()}")

        display_records()

    except Exception as e:

        print(f"Error reading record: {e}")

    finally:

        conn.close()


def update_gn_biru_record(row):

    conn = sqlite3.connect('DATAMUSIK.db')

    c = conn.cursor()

    try:

        c.execute("UPDATE Gn_Biru SET Level = ?, Bass_1 = ?, Trebel_1 = ?, Bass_2 = ?, Trebel_2 = ?, Bass_3 = ? WHERE ID = ?", 

                  (row[1].get(), row[2].get(), row[3].get(), row[4].get(), row[5].get(), row[6].get(), row[0].get()))

        conn.commit()

    except Exception as e:

        print(f"Error updating record: {e}")

    finally:

        conn.close()

    clear_entries_gn_biru(row)

    display_records()


def delete_gn_biru_record(row):

    conn = sqlite3.connect('DATAMUSIK.db')

    c = conn.cursor()

    try:

        c.execute("DELETE FROM Gn_Biru WHERE ID = ?", (row[0].get(),))

        conn.commit()

    except Exception as e:

        print(f"Error deleting record: {e}")

    finally:

        conn.close()

    clear_entries_gn_biru(row)

    display_records()


def clear_entries_gn_biru(row=None):

    if row:

        for entry in row:

            entry.delete(0, tk.END)

    else:

        for row in entry_rows:

            for entry in row:

                entry.delete(0, tk.END)

    setup_default_mode()

    input_id_entry()


def setup_default_mode():

    levels = ["Satu", "Dua", "Tiga"]

    for row_index, row in enumerate(entry_rows):

        row[1].delete(0, tk.END)

        row[1].insert(0, levels[row_index])

        row[1].config(state='readonly')


def display_records():

    for widget in record_frame.winfo_children():

        widget.destroy()

    

    conn = sqlite3.connect('DATAMUSIK.db')

    c = conn.cursor()

    c.execute("SELECT * FROM Gn_Biru")

    records = c.fetchall()

    conn.close()


    for i, record in enumerate(records):

        for j, value in enumerate(record):

            tk.Label(record_frame, text=int(value) if isinstance(value, float) else value).grid(row=i, column=j, padx=5, pady=5)

            

#Label CRUD_Data

crud_data_label = tk.Label(data_frame, text="CRUD DATA Gn_Biru", bg="lightblue", fg="tomato")

crud_data_label.grid(row=0, column=0, sticky="w", padx=5, pady=5)



# Entry untuk Gn_Biru

labels = [" ID_ \n Gn_Biru", "Level", "Bass_1", "Trebel_1", "Bass_2", "Trebel_2", "Bass_3"]

for col_index, label in enumerate(labels):

    tk.Label(data_frame, text=label).grid(row=1, column=col_index, padx=5, pady=5)


entry_rows = []

for i in range(3): # Create three rows of entries

    row = []

    for j in range(len(labels)):

        if j == 0: # ID column

            entry = tk.Entry(data_frame, width=4)

        elif j == 1: # Level column

            entry = tk.Entry(data_frame, width=6, bg="white", justify="center")

            levels = ["Satu", "Dua", "Tiga"]

            entry.insert(0, levels[i])

            entry.config(state='readonly')

        else:

            entry = tk.Entry(data_frame, width=20)

        entry.grid(row=i+2, column=j, padx=5, pady=5)

        row.append(entry)

    entry_rows.append(row)


    

# Tombol-tombol untuk CRUD

tk.Button(data_frame, text="Create", bg="blue", fg="yellow", command=lambda: create_gn_biru_record(get_current_row())).grid(row=7, column=2, padx=5, pady=5)

tk.Button(data_frame, text=" Read ", bg="blue", fg="yellow", command=lambda: read_gn_biru_record(get_current_row())).grid(row=7, column=3, padx=5, pady=5)

tk.Button(data_frame, text="Update", bg="blue", fg="yellow", command=lambda: update_gn_biru_record(get_current_row())).grid(row=7, column=4, padx=5, pady=5)

tk.Button(data_frame, text="Delete", bg="blue", fg="yellow", command=lambda: delete_gn_biru_record(get_current_row())).grid(row=7, column=5, padx=5, pady=5)

tk.Button(data_frame, text="Clear Entries", bg="lightblue", fg="yellow", command=lambda: clear_entries_gn_biru()).grid(row=7, column=6, padx=5, pady=5)


def get_current_row():

    selected_id = id_entry.get()

    for row in entry_rows:

        if row[0].get() == selected_id:

            return row

    return entry_rows[0] # default to the first row if no match found

 


def input_id_entry():

    # Dapatkan teks dari entry

    input_id = id_entry.get()  

       # Bersihkan entry setelah input

    id_entry.delete(0, tk.END)

    # Menampilkan pesan konfirmasi

    messagebox.showinfo("Info", "ID berhasil diinput dan dibersihkan")             

          

id_label = tk.Label(data_frame, text="ID for \n Operation")

id_label.grid(row=5, column=0, padx=5, pady=5)

id_entry = tk.Entry(data_frame, width=6)

id_entry.grid(row=5, column=1, padx=5, pady=5)


# Membuat tombol input_id

input_id_button = tk.Button(data_frame, text="Clear ID", bg="red", fg="white", command=input_id_entry)

input_id_button.place(x=397, y=303)


# Frame untuk menampilkan records

record_frame = tk.Frame(content_frame)

record_frame.grid(row=9, column=0, sticky="w", padx=5, pady=10)


def open_crud_gn_biru_file():

    filepath = "CRUD_Gn_Biru.py"

    try:

        with open(filepath, 'r') as file:

            exec(file.read(), globals())

        messagebox.showinfo("Success", "File executed successfully")

    except Exception as e:

        messagebox.

showerror("Error", f"Failed to execute file: {e}") 


    # Pilih Buttons

pilih_button = tk.Button(content_frame, text="Pilih Nada", command=open_crud_gn_biru_file, bg="green", fg="white")

pilih_button.grid(row=11, column=0, sticky="w", padx=395, pady=5)


# Inisialisasi database dan baca data awal

create_database()

setup_default_mode()

display_records()


root.mainloop()


Untuk mengkaitkan data dari `data_gn_biru` dalam kode Anda dengan data yang diambil dari `DATAMUSIK.db`, kita perlu mengintegrasikan pengambilan data dari database ke dalam fungsi `pilih_nada`. Kita akan melakukan query ke database `Gn_Biru` untuk mendapatkan data yang sesuai berdasarkan `id_selected`, `progres`, dan `mode`. Berikut adalah kode yang telah dimodifikasi untuk menghubungkan data dari database:


```python

import tkinter as tk

from tkinter import messagebox, ttk

import sqlite3


# Koneksi ke database

def get_data_from_db(id_selected):

    conn = sqlite3.connect("DATAMUSIK.db")

    cursor = conn.cursor()

    cursor.execute("SELECT * FROM Gn_Biru WHERE ID = ?", (id_selected,))

    data = cursor.fetchone()

    conn.close()

    return data


def pilih_nada():

    try:

        id_selected = int(entry_id.get())

        progres = int(progres_var.get())

        mode = mode_var.get().lower()


        # Dapatkan data dari database

        data_gn_biru = get_data_from_db(id_selected)

        if not data_gn_biru:

            messagebox.showerror("Error", "Data tidak ditemukan")

            return


        # Hapus data sebelumnya di EntryBox

        entry_bass_1.delete(0, tk.END)

        entry_trebel_1.delete(0, tk.END)

        entry_bass_2.delete(0, tk.END)

        entry_trebel_2.delete(0, tk.END)

        entry_bass_3.delete(0, tk.END)


        # Logika pengisian data ke EntryBox berdasarkan data dari database

        if id_selected == 1:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[4])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[5])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[6])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[6])

                entry_bass_3.insert(0, data_gn_biru[7])


        elif id_selected == 2:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[7])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[6])

                entry_bass_3.insert(0, data_gn_biru[7])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])


        elif id_selected == 3:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[7])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[7])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[6])

                entry_bass_3.insert(0, data_gn_biru[7])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[6])

                entry_bass_3.insert(0, data_gn_biru[7])

        else:

            messagebox.showerror("Error", "ID tidak valid atau tidak ditemukan")

    except ValueError:

        messagebox.showerror("Error", "Masukkan nilai numerik yang valid untuk ID dan progres")


# GUI setup

root = tk.Tk()

root.title("Pilihan Nada")


frame = ttk.Frame(root, padding="


Pada kode berikut ini, tolong perbaiki logika yang benar ditetapkan berikut ini agar supaya dari data yang diambil dari tabel Gn'Biru memenuhi ketentuan berikut:

1.1. Jika id=1, progres 1 mode Naik, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2, di kolom Bass_3 data dari id 1 Bass_3.

1.2. Jika id=1 progres 2 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2, di kolom Bass_3 data dari id 1 Bass_3.

1.3. Jika id=1 progres 3 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2, di kolom Bass_3 data dari id 1 Bass_3.

1.4. Jika id=1, progres 1 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2.

1.5. Jika id=1 progres 2 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2.

1.6. Jika id=1 progres 3 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 1 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 1 Bass_2.

2.1. Jika id=2, progres 1 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2.

2.2. Jika id=2 progres 2 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2.

2.3. Jika id=2 progres 3 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2.

2.4. Jika id=2, progres 1 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2.

2.5. Jika id=2 progres 2 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2.

2.6. Jika id=2 progres 3 mode Turun, maka data yang terpilih adalah di kolom Bass_1 data dari id 2 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 2 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2.

3.1. Jika id=3, progres 1 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2.

2.2. Jika id=3 progres 2 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2.

2.3. Jika id=3 progres 3 mode Naik, maka data yang terpilih adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2.

2.4. Jika id=3, progres 1 mode Turun, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 3 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2, di kolom Trebel_2 data dari id 3 Trebel_2, di kolom Bass_3 data dari id 3 Bass_3.

2.5. Jika id=3 progres 2 mode Turun, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 1 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2, di kolom Trebel_2 data dari id 1 Trebel_2, di kolom Bass_3 data dari id 3 Bass_3.

2.6. Jika id=3 progres 3 mode Turun, maka data yang terpilih adalah adalah di kolom Bass_1 data dari id 3 Bass_1, di kolom Trebel_1 data dari id 2 Trebel_1, di kolom Bass_2 data dari id 3 Bass_2, di kolom Trebel_2 data dari id 2 Trebel_2, di kolom Bass_3 data dari id 3 Bass_3. 


import tkinter as tk

from tkinter import messagebox, ttk

import sqlite3


# Koneksi ke database

def get_data_from_db(id_selected):

    conn = sqlite3.connect("DATAMUSIK.db")

    cursor = conn.cursor()

    cursor.execute("SELECT * FROM Gn_Biru WHERE ID = ?", (id_selected,))

    data = cursor.fetchone()

    conn.close()

    return data


def pilih_nada():

    try:

        id_selected = int(entry_id.get())

        progres = int(progres_var.get())

        mode = mode_var.get().lower()


        # Dapatkan data dari database

        data_gn_biru = get_data_from_db(id_selected)

        if not data_gn_biru:

            messagebox.showerror("Error", "Data tidak ditemukan")

            return


        # Hapus data sebelumnya di EntryBox

        entry_bass_1.delete(0, tk.END)

        entry_trebel_1.delete(0, tk.END)

        entry_bass_2.delete(0, tk.END)

        entry_trebel_2.delete(0, tk.END)

        entry_bass_3.delete(0, tk.END)


        # Logika pengisian data ke EntryBox berdasarkan data dari database

        if id_selected == 1:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])                

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(2, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(2, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])    

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])                      

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(2, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])                

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                

        elif id_selected == 2:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[6])                

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])


        elif id_selected == 3:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])                

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[6])

                entry_bass_2.insert(0, data_gn_biru[4])                

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])

        else:

            messagebox.showerror("Error", "ID tidak valid atau tidak ditemukan")

    except ValueError:

        messagebox.showerror("Error", "Masukkan nilai numerik yang valid untuk ID dan progres")


# GUI setup

root = tk.Tk()

root.title("Pilihan Nada")


frame = ttk.Frame(root, padding="10")

frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))


# Entry for ID

ttk.Label(frame, text="ID:").grid(row=0, column=0, sticky=tk.W)

entry_id = ttk.Entry(frame)

entry_id.grid(row=0, column=1, sticky=(tk.W, tk.E))


# Entry for progres

ttk.Label(frame, text="Progres:").grid(row=1, column=0, sticky=tk.W)

progres_var = ttk.Combobox(frame, values=[1, 2, 3])

progres_var.grid(row=1, column=1, sticky=(tk.W, tk.E))


# Entry for mode

ttk.Label(frame, text="Mode:").grid(row=2, column=0, sticky=tk.W)

mode_var = ttk.Combobox(frame, values=["naik", "turun"])

mode_var.grid(row=2, column=1, sticky=(tk.W, tk.E))


# Entry boxes for bass and trebel

ttk.Label(frame, text="Bass 1:").grid(row=3, column=0, sticky=tk.W)

entry_bass_1 = ttk.Entry(frame)

entry_bass_1.grid(row=3, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Trebel 1:").grid(row=4, column=0, sticky=tk.W)

entry_trebel_1 = ttk.Entry(frame)

entry_trebel_1.grid(row=4, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Bass 2:").grid(row=5, column=0, sticky=tk.W)

entry_bass_2 = ttk.Entry(frame)

entry_bass_2.grid(row=5, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Trebel 2:").grid(row=6, column=0, sticky=tk.W)

entry_trebel_2 = ttk.Entry(frame)

entry_trebel_2.grid(row=6, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Bass 3:").grid(row=7, column=0, sticky=tk.W)

entry_bass_3 = ttk.Entry(frame)

entry_bass_3.grid(row=7, column=1, sticky=(tk.W, tk.E))


# Button to trigger the selection

ttk.Button(frame, text="Pilih Nada", command=pilih_nada).grid(row=9, column=0, columnspan=2)


root.mainloop()


Perlu diperhatikan bahwa setiap data Bass yang mengalami Progres dan Mode Naik atau Turun, Nada Bass tersebut adalah akan tetap dan diambil dari id nya dia. Sedangkan data Trebel yang mengalami Progres dan Mode Naik atau Turun, Nada Trebel tersebut akan mengalami perubahan dan diambil dari id yang lain di kolom yang sama sesuai dengan hitungan progres dan mode Naik atau Turun. Jadi setiap data Trebel pasti ia akan berubah


Berikut adalah kode yang sudah diperbaiki sesuai dengan ketentuan yang Anda berikan:


```python

import tkinter as tk

from tkinter import messagebox, ttk

import sqlite3


# Fungsi untuk mengambil data dari database berdasarkan ID

def get_data_from_db(id_selected):

    conn = sqlite3.connect("DATAMUSIK.db")

    cursor = conn.cursor()

    cursor.execute("SELECT * FROM Gn_Biru WHERE ID = ?", (id_selected,))

    data = cursor.fetchone()

    conn.close()

    return data


# Fungsi untuk memilih nada berdasarkan ID, progres, dan mode

def pilih_nada():

    try:

        id_selected = int(entry_id.get())

        progres = int(progres_var.get())

        mode = mode_var.get().lower()


        # Dapatkan data dari database

        data_gn_biru = get_data_from_db(id_selected)

        if not data_gn_biru:

            messagebox.showerror("Error", "Data tidak ditemukan")

            return


        # Hapus data sebelumnya di EntryBox

        entry_bass_1.delete(0, tk.END)

        entry_trebel_1.delete(0, tk.END)

        entry_bass_2.delete(0, tk.END)

        entry_trebel_2.delete(0, tk.END)

        entry_bass_3.delete(0, tk.END)


        # Logika pengisian data ke EntryBox berdasarkan data dari database

        if id_selected == 1:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(3)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(3)[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(2)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(2)[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(2)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(3)[3])

                entry_bass_2.insert(0, data_gn_biru[4])


        elif id_selected == 2:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(1)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(1)[5])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(3)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(3)[5])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(3)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(3)[5])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(1)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(1)[5])


        elif id_selected == 3:

            if progres == 1 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 2 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(2)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 3 and mode == "naik":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(1)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

            elif progres == 1 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, data_gn_biru[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, data_gn_biru[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 2 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(1)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(1)[5])

                entry_bass_3.insert(0, data_gn_biru[6])

            elif progres == 3 and mode == "turun":

                entry_bass_1.insert(0, data_gn_biru[2])

                entry_trebel_1.insert(0, get_data_from_db(2)[3])

                entry_bass_2.insert(0, data_gn_biru[4])

                entry_trebel_2.insert(0, get_data_from_db(2)[5])

                entry_bass_3.insert(0, data_gn_biru[6])

        else:

            messagebox.showerror("Error", "ID tidak valid atau tidak ditemukan")

    except ValueError:

        messagebox.showerror("Error", "Masukkan nilai numerik yang valid untuk ID dan progres")


# GUI setup

root = tk.Tk()

root.title("Pilihan Nada")


frame = ttk.Frame(root, padding="10")

frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))


# Entry for ID

ttk.Label(frame, text="ID:").grid(row=0, column=0, sticky=tk.W)

entry_id = ttk.Entry(frame)

entry_id.grid(row=0, column=1, sticky=(tk.W, tk.E))


# Entry for progres

ttk.Label(frame, text="Progres:").grid(row=1, column=0, sticky=tk.W)

progres_var = ttk.Combobox(frame, values=[1, 2, 3])

progres_var.grid(row=1, column=1, sticky=(tk.W, tk.E))


# Entry for mode

ttk.Label(frame, text="Mode:").grid(row=2, column=0, sticky=tk.W)

mode_var = ttk.Combobox(frame, values=["naik", "turun"])

mode_var.grid(row=2, column=1, sticky=(tk.W, tk.E))


# Entry boxes for bass and trebel

ttk.Label(frame, text="Bass 1:").grid(row=3, column=0, sticky=tk.W)

entry_bass_1 = ttk.Entry(frame)

entry_bass_1.grid(row=3, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Trebel 1:").grid(row=4, column=0, sticky=tk.W)

entry_trebel_1 = ttk.Entry(frame)

entry_trebel_1.grid(row=4, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Bass 2:").grid(row=5, column=0, sticky=tk.W)

entry_bass_2 = ttk.Entry(frame)

entry_bass_2.grid(row=5, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Trebel 2:").grid(row=6, column=0, sticky=tk.W)

entry_trebel_2 = ttk.Entry(frame)

entry_trebel_2.grid(row=6, column=1, sticky=(tk.W, tk.E))


ttk.Label(frame, text="Bass 3:").grid(row=7, column=0, sticky=tk.W)

entry_bass_3 = ttk.Entry(frame)

entry_bass_3.grid(row=7, column=1, sticky=(tk.W, tk.E))


# Button to trigger the selection

ttk.Button(frame, text="Pilih Nada", command=pilih_nada).grid(row=9, column=0, columnspan=2)


root.mainloop()



Kode tersebut terlihat sudah lengkap dan siap dijalankan. Aplikasi ini memungkinkan pengguna untuk memilih nada berdasarkan ID, progres, dan mode, serta mengisi entri bass dan trebel sesuai dengan data yang diambil dari database. Berikut ini adalah beberapa langkah untuk memastikan semuanya berfungsi dengan baik:


1. **Pastikan Database dan Tabelnya Ada**:

   - Pastikan database `DATAMUSIK.db` ada di direktori yang sama dengan skrip Python.

   - Pastikan tabel `Gn_Biru` memiliki struktur dan data yang sesuai. Kolom-kolom yang digunakan (misalnya ID, bass1, trebel1, dll.) harus sesuai dengan yang ada di kode.


2. **Cek Struktur Tabel `Gn_Biru`**:

   ```sql

   CREATE TABLE Gn_Biru (

       ID INTEGER PRIMARY KEY,

       Col1 TEXT,

       Bass1 TEXT,

       Trebel1 TEXT,

       Bass2 TEXT,

       Trebel2 TEXT,

       Bass3 TEXT

   );

   ```


3. **Cek Data dalam Tabel `Gn_Biru`**:

   ```sql

   INSERT INTO Gn_Biru (ID, Col1, Bass1, Trebel1, Bass2, Trebel2, Bass3) VALUES

   (1, 'Data1', 'Bass1A', 'Trebel1A', 'Bass2A', 'Trebel2A', 'Bass3A'),

   (2, 'Data2', 'Bass1B', 'Trebel1B', 'Bass2B', 'Trebel2B', 'Bass3B'),

   (3, 'Data3', 'Bass1C', 'Trebel1C', 'Bass2C', 'Trebel2C', 'Bass3C');

   ```


4. **Menjalankan Program**:

   Jalankan program menggunakan Python:

   ```bash

   python namafile.py

   ```


5. **Menguji Program**:

   - Masukkan ID yang valid (1, 2, atau 3).

   - Pilih progres (1, 2, atau 3).

   - Pilih mode (naik atau turun).

   - Klik tombol "Pilih Nada" dan lihat apakah entri diisi sesuai dengan logika yang diharapkan.


Jika semuanya berfungsi dengan baik, maka kamu sudah berhasil membuat aplikasi yang menggunakan Tkinter untuk berinteraksi dengan database SQLite. Jika ada error atau masalah, cek pesan error yang muncul dan pastikan bahwa database serta struktur tabel sesuai dengan yang diharapkan oleh kode.


Mantap bro, kita berhasil, Cuma masalahnya data Trebel tersebut harus diadaptasi lagi antara asal id dan tujuan letak id nya, Untuk itu kita harus membuat lagi label dan tombol untuk hasil akhir berupa label dan tombol Bass_1, Trebel_1, Bass_2, Trebel_2, dan Bass_3, dimana hasil akhir untuk data Bass adalah tetap, sedangkan data Trebel_1, dan Trebel_2 harus dirubah lagi harus ia beradaptasi terhadap letak akhir id yang ia dapatkan sehingga data Trebel_2, dan Trebel_2 ini harus kongruen dengan data yang didapatkan dan angka datanya harus turun 1 Laras (dalam musik) bila progresnya 1, tapi bila progresnya 2 maka angka datanya harus turun 2 Laras (dalam musik). Sebagai contoh bila data di tabel Gn_Biru di id 1 adalah Bass_1: 111, Trebel_1: 444, Bass_2: 777, Trebel_2: 1010, dan Bass_3: 1313. lalu di id 2 adalah Bass_1: 222, Trebel_1: 567, Bass_2: 888, Trebel_2: 111111, dan Bass_3: 1414. 

 Kemudian pada pemilihan gugusan nada terpilih misalkan di id 1 progres 2 mode Turun, maka akan didapat datanya yang awal sebelum adaptasi adalah Bass_1: 111, Trebel_1: 567, Bass_2: 777. Nah selanjutnya data Trebel_1: 567 ini karena dalam progres 2 maka data hasil akhirnya adalah Trebel_1: 345 (keterangan 345 didapat dari angka pertama dari 444 yang di id 1 Trebel_1 mengalami Progres 2 membuat angka 4 menjadi angka 3, lalu kongruen dengan angka 567 yang di id 2 Trebel_1)

Tolong diulang kembali, maksud saya Cuma masalahnya data Trebel tersebut harus diadaptasi lagi antara asal id dan tujuan letak id nya, Untuk itu kita harus membuat lagi label dan tombol untuk hasil akhir berupa label dan tombol Bass_1, Trebel_1, Bass_2, Trebel_2, dan Bass_3, dimana hasil akhir untuk data Bass adalah tetap, sedangkan data Trebel_1, dan Trebel_2 harus dirubah lagi harus ia beradaptasi terhadap letak akhir id yang ia dapatkan sehingga data Trebel_1, dan Trebel_2 ini harus kongruen dengan data yang didapatkan dan setiap karakter angka data yang didapatkannya harus turun 1 laras (dalam musik) bila progresnya 2, tapi bila progresnya 3 maka angka datanya harus turun 2 Laras (dalam musik). tetapi bila progres 1 maka angkanya tetap. Sebagai contoh bila data di tabel Gn_Biru di id 1 adalah Bass_1: 111, Trebel_1: 444, Bass_2: 777, Trebel_2: 1010, dan Bass_3: 1313. lalu di id 2 adalah Bass_1: 222, Trebel_1: 567, Bass_2: 888, Trebel_2: 111111, dan Bass_3: 1414, lalu di id 3 adalah Bass_1: 333, Trebel_1: 687, Bass_2: 999, Trebel_2: 1313, Bass_3: 1515.

 Kemudian pada pemilihan gugusan nada terpilih misalkan di id 1 progres 2 mode Turun, maka akan didapat datanya yang awal sebelum adaptasi adalah Bass_1: 111, Trebel_1: 567, Bass_2: 777. Nah selanjutnya data Trebel_1: 567 ini karena dalam progres 2 maka data hasil akhirnya adalah Trebel_1: 345 (keterangan 345 didapat dari angka pertama dari 444 yang di id 1 Trebel_1 mengalami Progres 2 membuat angka 4 menjadi angka 3, lalu kongruen dengan angka 567 yang di id 2 Trebel_1). Bila dilanjutkan Progres ke progres 3 di id 1 mode Turun maka data hasil akhirnya adalah Trebel_1: 243 (keterangan 243 didapat dari angka pertama dari 444 yang di id 1 Trebel_1 mengalami Progres 3 membuat angka 4 menjadi angka 2, lalu kongruen dengan angka 687 yang di id 3 Trebel_1). Untuk data Trebel yang lain berlaku demikian dengan hal yang sama 


Komentar

Postingan populer dari blog ini

Pemograman R Studio

  Metode Numerik Menggunakan R Pengantar Gambaran Isi Buku Cara Berkontribusi dalam Buku Ini Ucapan Terima Kasih Lisensi 1  Bahasa Pemrograman R 1.1  Sejarah R 1.2  Fitur dan Karakteristik R 1.3  Kelebihan dan Kekurangan R 1.4  RStudio 1.5  Menginstall R dan RStudio 1.6  Working Directory 1.6.1  Mengubah Lokasi Working Directory 1.6.2  Mengubah Lokasi Working Directory Default 1.7  Memasang dan Mengaktifkan Paket R 1.8  Fasilitas Help 1.8.1  Mencari Help dari Suatu Perintah Tertentu 1.8.2  General Help 1.8.3  Fasilitas Help Lainnya 1.9  Referensi 2  Kalkulasi Menggunakan R 2.1  Operator Aritmatik 2.2  Fungsi Aritmetik 2.3  Operator Relasi 2.4  Operator Logika 2.5  Memasukkan Nilai Kedalam Variabel 2.6  Tipe dan Struktur Data 2.7  Vektor 2.7.1  Membuat vektor 2.7.2  Missing Values 2.7.3  Subset Pada Vektor 2.7.4  Operasi Matematis Menggunakan Vektor ...

MIGRASI DATABASE DARI SQLite KE MySQL (Part-1)

  MIGRASI DATABASE DARI SQLite KE MySQL (Part-1) Pemakaian yang mana lebih baik dalam membuat database_musik di mysql atau Exel yang cell Cell pada tabel dilakukan operasi fungsi logika matematika. Untuk keperluan membuat database atau tabel yang memerlukan operasi logika atau matematika, seperti yang Anda sebutkan, MySQL jauh lebih baik dibandingkan Excel. Berikut adalah beberapa alasan mengapa MySQL lebih disarankan: 1. **Kapasitas dan Skalabilitas**: MySQL dapat menangani jumlah data yang jauh lebih besar daripada Excel. Ini penting jika Anda berencana untuk menyimpan banyak data atau melakukan operasi yang kompleks di atas data tersebut. 2. **Kekuatan dan Kinerja**: MySQL dirancang khusus untuk memproses query dan operasi basis data dengan cepat. Ini termasuk operasi matematika, logika, dan agregasi data yang umum dilakukan dalam aplikasi. 3. **Fleksibilitas Struktur**: Dalam MySQL, Anda dapat dengan mudah menentukan struktur tabel yang kompleks dan melakukan kueri yang lebih r...

Cara Menjadi Pengembang Front End – Keterampilan Front End Web Dev

  Menyumbangkan Belajar coding —  kurikulum 3.000 jam gratis 10 JUNI 2022 / #PENGEMBANGAN UJUNG DEPAN Bagaimana Menjadi Pengembang Front End – Keterampilan Front End Web Dev Joel Olawanle Beberapa profesional dengan bayaran tertinggi di dunia adalah pengembang front-end.  Mereka menggunakan pengetahuan dan bakat mereka untuk merancang situs web yang menarik dan ramah pengguna. Pengembang front-end tidak memerlukan gelar atau sertifikat sekolah untuk bekerja.  Sebaliknya, mereka harus memahami dasar-dasar pengembangan front-end, bahasa pemrograman, dan kerangka kerja pengembangan front-end. Dalam panduan ini, Anda akan belajar bagaimana menjadi pengembang front end dengan terlebih dahulu memahami apa yang dimaksud dengan pengembangan front end, keterampilan teknis dan soft skill yang diperlukan, bahasa dan kerangka kerja yang tersedia, dan beberapa langkah untuk memulai. Seorang pengembang front-end di Amerika Serikat dapat memperoleh rata-rata $86,178 per tahun, menu...