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
Posting Komentar
This Message