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

PEMAKAIAN FONT FONT KHUSUS UNTUK SIMBOL SIMBOL NOTASI ANGKA LAGU

  PEMAKAIAN FONT FONT KHUSUS UNTUK SIMBOL SIMBOL NOTASI ANGKA LAGU Bagaimana kalau di dalam applikasi pertitur notasi angka dibuatkan sistem teks dengan memakai font parnumstion untuk membuat simbol simbol pada notasi angka lagu Menggunakan font khusus seperti **Parnumstion** untuk membuat simbol-simbol pada notasi angka dalam aplikasi pertitur dapat menjadi solusi yang elegan untuk menampilkan simbol notasi secara visual menarik dan konsisten. Berikut adalah langkah-langkah umum yang dapat kamu lakukan untuk mengimplementasikan sistem teks dengan font ini dalam aplikasi Python, khususnya jika kamu menggunakan tkinter: ### Langkah-langkah Implementasi: 1. **Pastikan Font Tersedia:**    - Unduh dan instal font **Parnumstion** pada sistem yang akan menjalankan aplikasi. Font ini harus diinstal agar bisa digunakan oleh aplikasi tkinter.    - Kamu dapat menempatkan file font (biasanya dengan ekstensi `.ttf`) di folder aplikasi atau menginstalnya secara manual di sis...

Cara Membuat Config HTTP Custom

  Lompat ke konten Lompat ke sidebar Lompat ke footer KANGARIF.NET × Beranda   /  android   /  internet gratis Cara Membuat Config HTTP Custom Oleh bustami    12/13/2020    15 komentar Di artikel kali ini saya akan membagikan tutorial bagaimana  cara membuat config HTTP Custom . Daftar isi 1  Apa itu HTTP Custom ? 2  Apa itu Config HTTP Custom ? 3  Cara Membuat Config HTTP Custom 3.1  Membuat Config HTTP Custom dengan Metode SSL/SNI 4  Penutup Apa itu HTTP Custom ? HTTP Custom  adalah sebuah aplikasi Android yang saat ini banyak dipakai oleh para pecinta internet gratis (gretonger). Kepopuleran aplikasi ini bisa dibilang sebanding atau bahkan lebih bila dibandingkan dengan aplikasi sejenis yang lebih dulu populer, yaitu HTTP Injector. Saat ini HTTP Custom banyak dipakai untuk mengubah kuota internet tertentu dari operator seluler menjadi bisa digunakan untuk semua aplikasi. Seperti misalnya yang saat ini sed...

Error “ Unable To Locate Package ”

  CadeMedia Media Informasi Terbaru 2023 8 Cara Mengatasi “Tidak Dapat Menemukan Paket Termux” di HP Android TERAKHIR DIPERBARUI 16 SEPTEMBER 2023 Error “  Unable To Locate Package  ” adalah masalah yang sering dialami oleh pengguna Termux. Ini terjadi ketika Termux tidak dapat menemukan  paket  yang hendak diinstal. Salah satu contohnya ketika Anda mencoba menginstal  paket  seperti git. Termux adalah aplikasi terminal  emulator  dan  environment  berbasis Linux untuk perangkat Android. Sehingga pengguna dapat menjalankan perintah dan aplikasi Linux tanpa perlu akses  root  atau mengutak-atik sistem Android. Nah, arti dari  tidak dapat menemukan paket  adalah Termux tidak dapat menemukan lokasi atau keberadaan  paket  ingin Anda  install  . Pada artikel kali ini CadeMedia bahas tuntas, penyebab hingga cara mengatasi pesan  error  pada Termux yang sering muncul. Simak penjelasan di b...