Level_gn YANG BENAR UNTUK Gn_Cyan_Bawah DAN Sub_Gn_Cyan_Bawah
Memperbaiki fungsi level_gn untuk Gn_Cyan_Bawah, berikut logikanya: level_gn 1 = id 1, level_gn 2 = id 2, level_gn 3 = id 3, level'gn 4 = id 4, level_gn 5 = id 1 yang setiap karakter angka datanya dikurang 1, level_gn 6 = id 2 yang setiap karakter angka datanya dikurang 1, level_gn 7 = id 3 yang setiap karakter angka datanya dikurang 1, level_gn 8 = id 4 yang setiap karakter angka datanya dikurang 1, , level_gn 9 = id 1 yang setiap karakter angka datanya dikurang 2, level_gn 10 = id 2 yang setiap karakter angka datanya dikurang 2, level_gn 11 = id 3 yang setiap karakter angka datanya dikurang 2, level_gn 12 = id 4 yang setiap karakter angka datanya dikurang 2.
Dan untuk Sub_Gn_Cyan_Bawah, berikut logikanya: level_gn 1 = sub_id 1, level_gn 2 = sub_id 1 yang setiap karakter angka datanya dikurang 1, level_gn 3 = sub_id 1 yang setiap karakter angka datanya dikurang 2, level_gn 4 = sub_id 1 yang setiap karakter angka datanya dikurang 3, level_gn 5 = sub_id 1 yang setiap karakter angka datanya dikurang 4, level_gn 6 = sub_id 1 yang setiap karakter angka datanya dikurang 5, level_gn 7 = sub_id 1 yang setiap karakter angka datanya dikurang 6, level_gn 8 = sub_id 1 yang setiap karakter angka datanya dikurang 7, level_gn 9 = sub_id 1 yang setiap karakter angka datanya dikurang 8, level_gn 10 = sub_id 1 yang setiap karakter angka datanya dikurang 9,, level_gn 11 = sub_id 1 yang setiap karakter angka datanya dikurang 10, dan level_gn 12 = sub_id 1 yang setiap karakter angka datanya dikurang 11, Tolong buatkan kodenya pada fungsi level_gn.
Berikut adalah kode fungsi `level_gn` yang sudah dimodifikasi sesuai dengan logika yang Anda berikan untuk tabel `Gn_Cyan_Bawah` dan `Sub_Gn_Cyan_Bawah`:
```python
def level_gn(table_name):
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Variabel awal untuk ID, Sub_ID, kolom, dan modifikasi angka
id_selected = None
sub_id_selected = None
modifikasi_angka = 0 # Default 0, tidak ada pengurangan
if table_name == 'Gn_Cyan_Bawah':
# Logika untuk tabel Gn_Cyan_Bawah
if level_gn_selected in [1, 5, 9]:
id_selected = 1
modifikasi_angka = (level_gn_selected - 1) // 4 # 0, 1, atau 2
elif level_gn_selected in [2, 6, 10]:
id_selected = 2
modifikasi_angka = (level_gn_selected - 2) // 4 # 0, 1, atau 2
elif level_gn_selected in [3, 7, 11]:
id_selected = 3
modifikasi_angka = (level_gn_selected - 3) // 4 # 0, 1, atau 2
elif level_gn_selected in [4, 8, 12]:
id_selected = 4
modifikasi_angka = (level_gn_selected - 4) // 4 # 0, 1, atau 2
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None, None
elif table_name == 'Sub_Gn_Cyan_Bawah':
# Logika untuk tabel Sub_Gn_Cyan_Bawah
sub_id_selected = 1
modifikasi_angka = level_gn_selected - 1 # Modifikasi angka dari 0 hingga 11 berdasarkan level_gn
else:
messagebox.showerror("Error", "Nama tabel tidak valid!")
return None, None, None
# Menyisipkan ID atau Sub_ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
if table_name == 'Gn_Cyan_Bawah':
entry_id.insert(0, str(id_selected))
elif table_name == 'Sub_Gn_Cyan_Bawah':
entry_id.insert(0, str(sub_id_selected))
# Hanya untuk pengisian Entry jika menggunakan tkinter, tidak untuk pengembalian nilai logika
entry_modifikasi_angka.delete(0, 'end')
entry_modifikasi_angka.insert(0, str(modifikasi_angka))
if table_name == 'Gn_Cyan_Bawah':
return id_selected, modifikasi_angka
elif table_name == 'Sub_Gn_Cyan_Bawah':
return sub_id_selected, modifikasi_angka
except ValueError:
messagebox.showerror("Error", "Masukkan nilai Level_Gn yang valid!")
return None, None, None
```
### Penjelasan:
1. **Parameter `table_name`:**
- Fungsi ini menerima parameter `table_name` untuk menentukan apakah fungsi bekerja dengan `Gn_Cyan_Bawah` atau `Sub_Gn_Cyan_Bawah`.
2. **Logika untuk `Gn_Cyan_Bawah`:**
- Jika `Level_Gn` adalah 1, 5, atau 9, maka ID yang dipilih adalah 1 dengan modifikasi angka sesuai dengan level yang diatur (`0` untuk level 1, `1` untuk level 5, dan `2` untuk level 9).
- Logika serupa diterapkan untuk `Level_Gn` lainnya (2, 6, 10 untuk ID 2; 3, 7, 11 untuk ID 3; dan 4, 8, 12 untuk ID 4).
3. **Logika untuk `Sub_Gn_Cyan_Bawah`:**
- Untuk tabel ini, `Sub_ID` selalu 1, dan modifikasi angka adalah `Level_Gn - 1`, yang berarti pengurangan angka dilakukan bertahap dari 0 hingga 11.
4. **Pengembalian Nilai:**
- Fungsi mengembalikan `id_selected` atau `sub_id_selected` bersama dengan `modifikasi_angka`.
Fungsi ini telah disesuaikan untuk menangani kedua tabel dengan logika yang berbeda namun terintegrasi dalam satu fungsi. Apakah ini sudah sesuai dengan kebutuhan Anda?
Tolong gabung kode berikut:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import sqlite3
# Initialize the main window
root = tk.Tk()
root.geometry("690x1390")
root.title("Arah Arus Musik")
# Fungsi untuk mengambil data dari Gn_Cyan_Bawah berdasarkan ID
def get_data_gn_cyan_bawah_from_db(id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Gn_Cyan_Bawah WHERE ID = ?", (id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk mengambil data dari Sub_Gn_Cyan_Bawah berdasarkan Sub_ID
def get_data_sub_gn_cyan_bawah_from_db(sub_id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Sub_Gn_Cyan_Bawah WHERE Sub_ID = ?", (sub_id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk menyesuaikan nilai Bass berdasarkan progres
def adjust_bass_value(bass_value, progres):
if bass_value.isdigit():
adjusted_value = ''.join(str(int(char)) if char.isdigit() else char for char in bass_value)
else:
adjusted_value = bass_value
return adjusted_value
# Fungsi untuk menyesuaikan nilai trebel_biasa berdasarkan progres
def adjust_trebel_biasa_value(trebel_biasa_value, progres):
if trebel_biasa_value.isdigit():
adjusted_value = ''.join(str(int(char) - progres) if char.isdigit() else char for char in trebel_biasa_value)
else:
adjusted_value = trebel_biasa_value
return adjusted_value
# Fungsi untuk menghapus separuh karakter dari belakang
def remove_half_characters(value):
length = len(value)
half_length = length // 2
return value[:half_length]
# Fungsi untuk menyesuaikan nilai Trebel_Aneh berdasarkan progres
def adjust_trebel_aneh_value(trebel_aneh_value, progres):
if trebel_aneh_value.isdigit():
adjusted_value = ''.join(str(int(char) - progres) if char.isdigit() else char for char in trebel_aneh_value)
else:
adjusted_value = trebel_aneh_value
return adjusted_value
# Fungsi untuk menyesuaikan nilai Trebel_Aneh berdasarkan progres
def adjust_sub_trebel_aneh_value(sub_trebel_aneh_value, progres):
if sub_trebel_aneh_value.isdigit():
adjusted_value = ''.join(str(int(char) - progres) if char.isdigit() else char for char in sub_trebel_aneh_value)
else:
adjusted_value = sub_trebel_aneh_value
return adjusted_value
# Fungsi untuk memilih nada Bass dan Trebel berdasarkan ID, progres, mode, level_gn, dan Nada
def pilih_nada():
try:
# Ambil nilai dari entry_id dan variabel progres serta mode
level_gn_selected = int(entry_level_gn.get())
id_selected = int(entry_id.get())
progres_selected = int(progres_var.get())
mode_selected = mode_var.get().lower()
nada_selected = nada_var.get().lower()
# Ambil data dari Gn_Cyan_Bawah dan Sub_Gn_Cyan_Bawah
data_gn_cyan_bawah = get_data_gn_cyan_bawah_from_db(id_selected)
data_sub_gn_cyan_bawah = get_data_sub_gn_cyan_bawah_from_db(1) # Sub_ID untuk Sub_Gn_Cyan_Bawah selalu 1
if not data_gn_cyan_bawah or not data_sub_gn_cyan_bawah:
messagebox.showerror("Error", "Data tidak ditemukan. \nInput ID harus 1, 2, 3, atau 4")
return
# Kosongkan entry sebelumnya
entry_bass.delete(0, tk.END)
entry_sub_bass.delete(0, tk.END)
# Tampilkan nilai Bass yang telah disesuaikan berdasarkan progres
if level_gn_selected in range(1, 13) and nada_selected == "bass":
if progres_selected == 1:
# Tampilkan nilai bass dari Gn_Cyan_Bawah
entry_bass.insert(0, data_gn_cyan_bawah[2]) # bass ID 1
entry_sub_bass.insert(0, data_sub_gn_cyan_bawah[2]) # bass Sub_ID 1
else:
# Tampilkan nilai yang telah disesuaikan berdasarkan progres
adjusted_bass = adjust_bass_value(data_gn_cyan_bawah[2], progres_selected - 0)
entry_bass.insert(0, adjusted_bass)
entry_sub_bass.insert(0, adjust_bass_value(data_sub_gn_cyan_bawah[2], progres_selected - 0))
messagebox.showinfo("Success", "Data berhasil diambil dan disesuaikan")
else:
messagebox.showerror("Error", "Masukkan input level_gn yang benar. \nLevel_Gn harus dalam rentang 1-12. \nInput Nada harus Bass")
except ValueError:
messagebox.showerror("Error", "ID, Level_Gn, dan Progres harus berupa angka")
finally:
entry_level_gn.delete(0, 'end')
entry_id.delete(0, 'end')
progres_combobox.set('')
mode_combobox.set('')
nada_combobox.set('')
def pilih_nada():
try:
level_gn_selected = int(entry_level_gn.get())
id_selected = int(entry_id.get())
progres_selected = int(progres_var.get())
mode_selected = mode_var.get().lower()
nada_selected = nada_var.get().lower()
# Cek apakah level_gn_selected adalah 1, 2, 3, 5, 6, 7, 9, 10, atau 11
if level_gn_selected not in [1, 2, 3, 5, 6, 7, 9, 10, 11]:
messagebox.showerror("Error", "Masukkan input yang benar. \nInput level_gn harus 1, 2, 3, \n5, 6, 7, 9, 10, atau 11")
return
# Cek apakah ID yang dimasukkan adalah 4, yang tidak valid
if id_selected == 4:
messagebox.showerror("Error", "Masukkan input yang benar. \nInput ID harus 1, 2, atau 3")
return
# Ambil data dari Gn_Cyan_Bawah
data_gn_cyan_bawah = get_data_gn_cyan_bawah_from_db(id_selected)
if not data_gn_cyan_bawah:
messagebox.showerror("Error", "Data tidak ditemukan. \nInput ID harus 1, 2, atau 3")
return
entry_trebel_biasa.delete(0, tk.END)
# Jika level_gn adalah 1, 2, 3, 5, 6, 7, 9, 10, , atau 11, tampilkan nilai trebel_biasa
if level_gn_selected in [1, 2, 3, 5, 6, 7, 9, 10, 11]:
if progres_selected == 1:
# Tampilkan nilai trebel_biasa dari Gn_Cyan_Bawah
entry_trebel_biasa.insert(0, data_gn_cyan_bawah[3]) # trebel_biasa ID 1
else:
# Tampilkan nilai yang telah disesuaikan berdasarkan pogres
adjusted_trebel_biasa = adjust_trebel_biasa_value(data_gn_cyan_bawah[3], progres_selected - 1)
entry_trebel_biasa.insert(0, adjusted_trebel_biasa)
else:
# Jika level_gn bukan 1, 2, 3, 5, 6, 7, 9, 10, atau 11, kosongkan entry
entry_trebel_biasa.delete(0, tk.END)
messagebox.showinfo("Success", "Data berhasil diambil dan disesuaikan")
except ValueError:
messagebox.showerror("Error", "ID, Level_Gn, dan Progres harus berupa angka")
finally:
# Bersihkan atau reset entry dan combobox setelah data dipilih
entry_level_gn.delete(0, 'end')
entry_id.delete(0, 'end')
progres_combobox.set('') # Kosongkan combobox
mode_combobox.set('') # Kosongkan combobox
nada_combobox.set('') # Kosongkan combobox
def pilih_nada():
try:
level_gn_selected = int(entry_level_gn.get())
id_selected = int(entry_id.get())
progres_selected = int(progres_var.get())
mode_selected = mode_var.get().lower()
nada_selected = nada_var.get().lower()
# Cek apakah level_gn_selected adalah 4, 8, atau 12
if level_gn_selected not in [4, 8, 12]:
messagebox.showerror("Error", "Masukkan input yang benar. \nInput level_gn harus 4, 8, atau 12")
return
# Ambil data dari Gn_Cyan_Bawah dan Sub_Gn_Cyan_Bawah
data_gn_cyan_bawah = get_data_gn_cyan_bawah_from_db(id_selected)
data_sub_gn_cyan_bawah = get_data_sub_gn_cyan_bawah_from_db(1) # Sub_ID untuk Sub_Gn_Cyan_Bawah selalu 1
if not data_gn_cyan_bawah or not data_sub_gn_cyan_bawah:
messagebox.showerror("Error", "Data tidak ditemukan. \nInput ID harus 1, 2, 3, atau 4")
return
entry_trebel_aneh.delete(0, tk.END)
entry_sub_trebel_aneh.delete(0, tk.END)
# Jika level_gn adalah 4, 8, atau 12, tampilkan nilai Trebel_Aneh
if level_gn_selected in [4, 8, 12]:
if progres_selected == 1:
# Tampilkan nilai Trebel_Aneh dari Gn_Cyan_Bawah
entry_trebel_aneh.insert(0, data_gn_cyan_bawah[4]) # Trebel_Aneh ID 1
entry_sub_trebel_aneh.insert(0, data_sub_gn_cyan_bawah[4]) # Trebel_Aneh Sub_ID 1
else:
# Tampilkan nilai yang telah disesuaikan berdasarkan progres
adjusted_trebel_aneh = adjust_trebel_aneh_value(data_gn_cyan_bawah[4], progres_selected - 1)
entry_trebel_aneh.insert(0, adjusted_trebel_aneh)
entry_sub_trebel_aneh.insert(0, adjust_trebel_aneh_value(data_sub_gn_cyan_bawah[4], progres_selected - 1))
else:
# Jika level_gn bukan 4, 8, atau 12, kosongkan entry
entry_trebel_aneh.delete(0, tk.END)
entry_sub_trebel_aneh.delete(0, tk.END)
messagebox.showinfo("Success", "Data berhasil diambil dan disesuaikan")
except ValueError:
messagebox.showerror("Error", "ID, Level_Gn, dan Progres harus berupa angka")
finally:
entry_level_gn.delete(0, 'end')
entry_id.delete(0, 'end')
progres_combobox.set('')
mode_combobox.set('')
nada_combobox.set('')
# Fungsi untuk memastikan urutan Level_Gn dan ID
def level_gn(table_name):
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Variabel awal untuk ID, Sub_ID, kolom, dan modifikasi angka
id_selected = None
sub_id_selected = None
modifikasi_angka = 0 # Default 0, tidak ada pengurangan
if table_name == 'Gn_Cyan_Bawah':
# Logika untuk tabel Gn_Cyan_Bawah
if level_gn_selected in [1, 5, 9]:
id_selected = 1
modifikasi_angka = (level_gn_selected - 1) // 4 # 0, 1, atau 2
elif level_gn_selected in [2, 6, 10]:
id_selected = 2
modifikasi_angka = (level_gn_selected - 2) // 4 # 0, 1, atau 2
elif level_gn_selected in [3, 7, 11]:
id_selected = 3
modifikasi_angka = (level_gn_selected - 3) // 4 # 0, 1, atau 2
elif level_gn_selected in [4, 8, 12]:
id_selected = 4
modifikasi_angka = (level_gn_selected - 4) // 4 # 0, 1, atau 2
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None, None
elif table_name == 'Sub_Gn_Cyan_Bawah':
# Logika untuk tabel Sub_Gn_Cyan_Bawah
sub_id_selected = 1
modifikasi_angka = level_gn_selected - 1 # Modifikasi angka dari 0 hingga 11 berdasarkan level_gn
else:
messagebox.showerror("Error", "Nama tabel tidak valid!")
return None, None, None
# Menyisipkan ID atau Sub_ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
if table_name == 'Gn_Cyan_Bawah':
entry_id.insert(0, str(id_selected))
elif table_name == 'Sub_Gn_Cyan_Bawah':
entry_id.insert(0, str(sub_id_selected))
# Hanya untuk pengisian Entry jika menggunakan tkinter, tidak untuk pengembalian nilai logika
entry_modifikasi_angka.delete(0, 'end')
entry_modifikasi_angka.insert(0, str(modifikasi_angka))
if table_name == 'Gn_Cyan_Bawah':
return id_selected, modifikasi_angka
elif table_name == 'Sub_Gn_Cyan_Bawah':
return sub_id_selected, modifikasi_angka
except ValueError:
messagebox.showerror("Error", "Masukkan nilai Level_Gn yang valid!")
return None, None, None
frame_top = tk.Frame(root)
frame_top.pack()
label_level_gn = tk.Label(frame_top, text="Level_Gn:")
label_level_gn.grid(row=1, column=0, padx=5, pady=5)
entry_level_gn = tk.Entry(frame_top)
entry_level_gn.grid(row=1, column=1, padx=5, pady=5)
label_id = tk.Label(frame_top, text="ID:")
label_id.grid(row=2, column=0, padx=5, pady=5)
entry_id = tk.Entry(frame_top)
entry_id.grid(row=2, column=1, padx=5, pady=5)
label_progres = tk.Label(frame_top, text="Progres:")
label_progres.grid(row=3, column=0, padx=5, pady=5)
progres_var = tk.StringVar()
progres_combobox = ttk.Combobox(frame_top, textvariable=progres_var)
progres_combobox['values'] = (1, 2, 3)
progres_combobox.grid(row=3, column=1, padx=5, pady=5)
label_mode = tk.Label(frame_top, text="Mode:")
label_mode.grid(row=4, column=0, padx=5, pady=5)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(frame_top, textvariable=mode_var)
mode_combobox['values'] = ("Naik", "Turun")
mode_combobox.grid(row=4, column=1, padx=5, pady=5)
label_nada = tk.Label(frame_top, text="Nada:")
label_nada.grid(row=5, column=0, padx=5, pady=5)
nada_var = tk.StringVar()
nada_combobox = ttk.Combobox(frame_top, textvariable=nada_var)
nada_combobox['values'] = ("Bass", "Trebel")
nada_combobox.grid(row=5, column=1, padx=5, pady=5)
separator = ttk.Separator(frame_top, orient='horizontal')
separator.grid(row=6, column=0, sticky="ew", pady=15)
# Bottom Frame
bottom_frame = tk.Frame(root, bg="#e2e2e2")
bottom_frame.pack(side=tk.TOP, fill=tk.X)
label_bass = tk.Label(bottom_frame, text="Bass Gn Cyan Bawah:")
label_bass.grid(row=0, column=0, padx=5, pady=5)
entry_bass = tk.Entry(bottom_frame)
entry_bass.grid(row=1, column=0, padx=5, pady=5)
label_sub_bass = tk.Label(bottom_frame, text="Sub Bass Gn Cyan Bawah:")
label_sub_bass.grid(row=0, column=1, padx=5, pady=5)
entry_sub_bass = tk.Entry(bottom_frame)
entry_sub_bass.grid(row=1, column=1, padx=5, pady=5)
# Label dan Entry Ambil Gugusan nada Trebel_Biasa Teroilih
label_trebel_biasa = tk.Label(bottom_frame, text="Trebel Aneh \n Gn Cyan Bawah")
label_trebel_biasa.grid(row=9, column=3, padx=5, pady=5)
entry_trebel_biasa = tk.Entry(bottom_frame)
entry_trebel_biasa.grid(row=10, column=3, padx=5, pady=5)
# Label dan Entry Ambil Gugusan nada Trebel_Biasa Teroilih
label_trebel_aneh = tk.Label(bottom_frame, text="Trebel Aneh \n Gn Cyan Bawah")
label_trebel_aneh.grid(row=9, column=3, padx=5, pady=5)
entry_trebel_aneh = tk.Entry(bottom_frame)
entry_trebel_aneh.grid(row=10, column=3, padx=5, pady=5)
label_sub_trebel_aneh = tk.Label(bottom_frame, text="Sub Trebel Aneh \n Gn Cyan Bawah:")
label_sub_trebel_aneh.grid(row=9, column=4, padx=5, pady=5)
entry_sub_trebel_aneh = tk.Entry(bottom_frame)
entry_sub_trebel_aneh.grid(row=10, column=4, padx=5, pady=5)
# Tombol untuk memilih nada
pilih_nada_btn = tk.Button(bottom_frame, text="Pilih Nada", bg="lightgreen", fg="black", command=pilih_nada)
pilih_nada_btn.grid(row=11, column=2, padx=10, pady=10, columnspan=2)
root.mainloop()
Pastikan setiap elemen tidak ada yang ganda atau duplikat, sehingga applikasi dapat berjalan dengan baik dan tanpa error
Tolong perbaiki kode untuk nada Bass, seharusnya nada Bass yang tampil adalah tetap sebab nada Bass tidak mengalami perubahan pada setiap progres
Kode diperbaiki menjadi berikut ini:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import sqlite3
# Initialize the main window
root = tk.Tk()
root.geometry("690x1390")
root.title("Arah Arus Musik")
# Fungsi untuk mengambil data dari Gn_Cyan_Bawah berdasarkan ID
def get_data_gn_cyan_bawah_from_db(id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Gn_Cyan_Bawah WHERE ID = ?", (id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk mengambil data dari Sub_Gn_Cyan_Bawah berdasarkan Sub_ID
def get_data_sub_gn_cyan_bawah_from_db(sub_id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Sub_Gn_Cyan_Bawah WHERE Sub_ID = ?", (sub_id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk menyesuaikan nilai Bass berdasarkan progres
def adjust_bass_value(bass_value, progres, mode):
if bass_value.isdigit():
adjusted_value = ''.join(str(int(char)) if char.isdigit() else char for char in bass_value)
else:
adjusted_value = bass_value
return adjusted_value
# Fungsi untuk menyesuaikan nilai Trebel berdasarkan progres
def adjust_value(value, progres, mode):
if value.isdigit():
return ''.join(str(int(char) - progres) if char.isdigit() else char for char in value)
return value
# Fungsi untuk memilih nada Bass dan Trebel berdasarkan ID, progres, mode, level_gn, dan Nada
def pilih_nada():
try:
level_gn_selected = int(entry_level_gn.get())
id_selected = int(entry_id.get())
progres_selected = int(progres_var.get())
mode_selected = mode_var.get().lower()
nada_selected = nada_var.get().lower()
# Ambil data dari Gn_Cyan_Bawah dan Sub_Gn_Cyan_Bawah
data_gn_cyan_bawah = get_data_gn_cyan_bawah_from_db(id_selected)
data_sub_gn_cyan_bawah = get_data_sub_gn_cyan_bawah_from_db(1) # Sub_ID untuk Sub_Gn_Cyan_Bawah selalu 1
if not data_gn_cyan_bawah or not data_sub_gn_cyan_bawah:
messagebox.showerror("Error", "Data tidak ditemukan. \nInput ID harus 1, 2, 3, atau 4")
return
# Kosongkan entry sebelumnya
entry_bass.delete(0, tk.END)
entry_trebel_biasa.delete(0, tk.END)
entry_trebel_aneh.delete(0, tk.END)
entry_sub_bass.delete(0, tk.END)
entry_sub_trebel_aneh.delete(0, tk.END)
if level_gn_selected in range(1, 13):
if nada_selected == "bass":
# Tampilkan nilai Bass yang telah disesuaikan berdasarkan progres
if progres_selected == 1:
# Tampilkan nilai bass dari Gn_Cyan_Bawah
entry_bass.insert(0, data_gn_cyan_bawah[2]) # bass ID 1
entry_sub_bass.insert(0, data_sub_gn_cyan_bawah[2]) # bass Sub_ID 1
else:
# Tampilkan nilai yang telah disesuaikan berdasarkan progres
adjusted_bass = adjust_bass_value(data_gn_cyan_bawah[2], progres_selected - 0, mode_selected)
entry_bass.insert(0, adjusted_bass)
entry_sub_bass.insert(0, adjust_bass_value(data_sub_gn_cyan_bawah[2], progres_selected - 0), mode_selected)
elif nada_selected == "trebel_biasa" and level_gn_selected in [1, 2, 3, 5, 6, 7, 9, 10, 11]:
# Tampilkan nilai Trebel_Biasa yang telah disesuaikan berdasarkan progres
adjusted_trebel_biasa = adjust_value(data_gn_cyan_bawah[3], progres_selected - 1, mode_selected)
entry_trebel_biasa.insert(0, adjusted_trebel_biasa)
elif nada_selected == "trebel_aneh" and level_gn_selected in [4, 8, 12]:
# Tampilkan nilai Trebel_Aneh yang telah disesuaikan berdasarkan progres
adjusted_trebel_aneh = adjust_value(data_gn_cyan_bawah[4], progres_selected - 1, mode_selected)
entry_trebel_aneh.insert(0, adjusted_trebel_aneh)
entry_sub_trebel_aneh.insert(0, adjust_value(data_sub_gn_cyan_bawah[4], progres_selected - 1, mode_selected))
else:
messagebox.showerror("Error", "Masukkan input yang benar untuk Nada atau Level_Gn.")
messagebox.showinfo("Success", "Data berhasil diambil dan disesuaikan")
else:
messagebox.showerror("Error", "Level_Gn harus dalam rentang 1-12.")
except ValueError:
messagebox.showerror("Error", "ID, Level_Gn, dan Progres harus berupa angka")
finally:
# Bersihkan atau reset entry dan combobox setelah data dipilih
entry_level_gn.delete(0, 'end')
entry_id.delete(0, 'end')
progres_combobox.set('')
mode_combobox.set('')
nada_combobox.set('')
# Definisikan elemen-elemen GUI lainnya seperti Entry, Combobox, dan Button di sini
# Misalnya:
entry_level_gn = tk.Entry(root)
entry_level_gn.grid(row=0, column=1)
entry_id = tk.Entry(root)
entry_id.grid(row=1, column=1)
# Combobox for Progres, Mode, and Nada
progres_var = tk.StringVar()
progres_combobox = ttk.Combobox(root, textvariable=progres_var)
progres_combobox['values'] = (1, 2, 3)
progres_combobox.grid(row=2, column=1)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(root, textvariable=mode_var)
mode_combobox['values'] = ('Naik', 'Turun')
mode_combobox.grid(row=3, column=1)
nada_var = tk.StringVar()
nada_combobox = ttk.Combobox(root, textvariable=nada_var)
nada_combobox['values'] = ('bass', 'trebel_biasa', 'trebel_aneh')
nada_combobox.grid(row=4, column=1)
separator = ttk.Separator(root, orient='horizontal')
separator.grid(row=5, column=0, sticky="ew", pady=15)
entry_bass = tk.Entry(root)
entry_bass.grid(row=6, column=1)
entry_sub_bass = tk.Entry(root)
entry_sub_bass.grid(row=7, column=1)
entry_trebel_biasa = tk.Entry(root)
entry_trebel_biasa.grid(row=8, column=1)
entry_trebel_aneh = tk.Entry(root)
entry_trebel_aneh.grid(row=9, column=1)
entry_sub_trebel_aneh = tk.Entry(root)
entry_sub_trebel_aneh.grid(row=10, column=1)
separator = ttk.Separator(root, orient='horizontal')
separator.grid(row=11, column=0, sticky="ew", pady=15)
# Tombol untuk memilih
nada
pilih_button = tk.Button(root, text="Pilih Nada", bg="lightgreen", command=pilih_nada)
pilih_button.grid(row=12, column=1)
root.mainloop()
Komentar
Posting Komentar
This Message