LOGIKA YANG DITERAPKAN PADA DATA Bass TABEL Gn_Cyan_Atas, DAN TABEL Sub_Gn_Cyan_Atas (Part-1)
Berikut ini logika yang diterapkan pada data Bass di tabel Gn_Cyan_Atas, dan tabel Sub_Gn_Cyan_Atas:
Logika pada data Bass di tabel Gn_Cyan_Atas:
I. Jika data gugus data yang terpilih dari kolom Bass pada Gn_Cyan_Atas:
1. Jika data dari Bass_1 id 1 maka level_gn = 1, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_1 id 1 menjadi data Bass_1 id 1
2. Jika data dari Bass_1 id 2 maka level_gn = 2, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_1 id 2 menjadi data Bass_1 id 2
3. Jika data dari Bass_1 id 3 maka level_gn = 3, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_1 id 3 menjadi Bass_1 id 3.
4. Jika data dari Bass_2 id 1 maka level_gn = 4, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_2 id 1 menjadi data Bass_2 id 1.
5. Kolom Bass_2 id 2 adalah kosong (tidak boleh menginput data di sel ini).
6. . Jika data dari Bass_2 id 3 maka level_gn = 5, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_2 id 3 menjadi data Bass_2 id 3.
7. Jika data dari Bass_3 id 1 maka level_gn = 6, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_3 id 1 menjadi data Bass_3 id 1.
8. Jika data dari Bass_3 id 2 maka level_gn = 7, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_3 id 2 menjadi data Bass_3 id 2.
9. Jika data dari Bass_3 id 3 maka level_gn = 8, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_3 id 3 menjadi data Bass_3 id 3.
10. Kolom Bass_4 id 1 adalah kosong (tidak boleh menginput data di sel ini).
11. . Jika data dari Bass_4 id 2 maka level_gn = 9, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_4 id 2 menjadi data Bass_4 id 2.
12. Jika data dari Bass_4 id 3 maka level_gn = 10, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_4 id 3 menjadi data Bass_4 id 3.
13. Jika data dari Bass_5 id 1 maka level_gn = 11, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_5 id 1 menjadi data Bass_5 id 1.
14, Jika data dari Bass_5 id 2 maka level_gn = 12, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_5 id 2 menjadi data Bass_5 id 2.
15. Kolom Bass_5 id 3 adalah kosong (tidak boleh menginput data di sel ini).
Logika pada data Bass di Sub_Gn_Cyan_Bawah:
II. Jika data gugus nada yang terpilih dari kolom Bass pada Sub_Gn_Cyan_Atas:
1.. Jika data dari Bass_1 sub_id 1 maka level_gn = 1, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_1 sub_id 1 adalah menjadi data Bass_1 sub_id 1.
2.. Jika data dari Bass_2 sub_id 1 maka level_gn = 2, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_2 sub_id 1 adalah menjadi data Bass_2 sub_id 1.
3.. Jika data dari Bass_3 sub_id 1 maka level_gn = 3, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_3 sub_id 1 adalah menjadi data Bass_3 sub_id 1.
4.. Jika data dari Bass_4 sub_id 1 maka level_gn = 4, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass_4 sub_id 1 adalah menjadi data Bass_4 sub_id 1.
Bagaimana jika penentuan level_gn tidak hanya berdasarkan id saja, tapi penentuan level_gn berdasarkan id dan kolom.
Untuk Gn_Cyan_Atas, masing-masing level_gn adalah eksklusif antara yang satu dengan yang lainnya: Level_gn 1 adalah ID 1 kolom Bass_1, Level_gn 4 adalah ID 1 kolom Bass_2, Level_gn 6 adalah ID 1 kolom Bass_3, Level_gn 11 adalah ID 1 kolom Bass_5, Level_gn 2 adalah ID 2 kolom Bass_1, Level_gn 7 adalah ID 2 kolom Bass_3, Level_gn 9 adalah ID 2 kolom Bass_4, Level_gn 12 adalah ID 2 kolom Bass_5, Level_gn 3 adalah ID 3 kolom Bass_1, Level_gn 5 adalah ID 3 kolom Bass_2, Level_gn 8 adalah ID 3 kolom Bass_3, Level_gn 10 adalah ID 3 kolom Bass_4,
Kemudian Untuk Sub_Gn_Cyan_Atas, masing-masing level_gn adalah eksklusif antara yang satu dengan yang lainnya: Level_gn 1 adalah ID 1 kolom Bass_1, Level_gn 5 adalah ID 1 kolom Bass_1 yang setiap karakter angkanya dikurang 1, Level_gn 9 adalah ID 1 kolom Bass_1 yang setiap karakter angkanya dikurang 2, Level_gn 2 adalah ID 1 kolom Bass_2, Level_gn 6 adalah ID 1 kolom Bass_2 yang setiap karakter angkanya dikurang 1, Level_gn 10 adalah ID 1 kolom Bass_2 yang setiap karakter angkanya dikurang 2, Level_gn 3 adalah ID 1 kolom Bass_3, Level_gn 7 adalah ID 1 kolom Bass_3 yang setiap karakter angkanya dikurang 1, Level_gn 11 adalah ID 1 kolom Bass_3, yang setiap karakter angkanya dikurang 2, Level_gn 4 adalah ID 1 kolom Bass_4, Level_gn 8 adalah ID 1 kolom Bass_4 yang setiap karakter angkanya dikurang 1, Level_gn 12 adalah ID 1 kolom Bass_4 yang setiap karakter angkanya dikurang 2,
Dengan logika yang dijelaskan, kita perlu membuat dua fungsi terpisah untuk menentukan `Level_Gn` berdasarkan tabel `Gn_Cyan_Atas` dan `Sub_Gn_Cyan_Atas`. Berikut adalah implementasi fungsi `level_gn` yang diperbarui sesuai dengan aturan eksklusif yang diberikan:
### Fungsi untuk `Gn_Cyan_Atas`
```python
# Fungsi untuk menentukan ID dan Kolom pada Gn_Cyan_Atas berdasarkan Level_Gn
def level_gn_gn_cyan_atas():
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Penentuan ID dan Kolom berdasarkan Level_Gn yang dipilih untuk Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_5'
elif level_gn_selected == 2:
id_selected = 2
kolom_selected = 'Bass_1'
elif level_gn_selected == 7:
id_selected = 2
kolom_selected = 'Bass_3'
elif level_gn_selected == 9:
id_selected = 2
kolom_selected = 'Bass_4'
elif level_gn_selected == 12:
id_selected = 2
kolom_selected = 'Bass_5'
elif level_gn_selected == 3:
id_selected = 3
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 3
kolom_selected = 'Bass_2'
elif level_gn_selected == 8:
id_selected = 3
kolom_selected = 'Bass_3'
elif level_gn_selected == 10:
id_selected = 3
kolom_selected = 'Bass_4'
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None
# Menyisipkan ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
entry_id.insert(0, str(id_selected))
entry_kolom.delete(0, 'end')
entry_kolom.insert(0, kolom_selected)
return id_selected, kolom_selected
except ValueError:
messagebox.showerror("Error", "Masukkan nilai Level_Gn yang valid!")
return None, None
```
### Fungsi untuk `Sub_Gn_Cyan_Atas`
```python
# Fungsi untuk menentukan ID dan Kolom pada Sub_Gn_Cyan_Atas berdasarkan Level_Gn
def level_gn_sub_gn_cyan_atas():
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Penentuan ID dan Kolom berdasarkan Level_Gn yang dipilih untuk Sub_Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = 0
elif level_gn_selected == 5:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -1
elif level_gn_selected == 9:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -2
elif level_gn_selected == 2:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = 0
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -1
elif level_gn_selected == 10:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -2
elif level_gn_selected == 3:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = 0
elif level_gn_selected == 7:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -1
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -2
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = 0
elif level_gn_selected == 8:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -1
elif level_gn_selected == 12:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -2
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None, None
# Menyisipkan ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
entry_id.insert(0, str(id_selected))
entry_kolom.delete(0, 'end')
entry_kolom.insert(0, kolom_selected)
return id_selected, kolom_selected, modifikasi_angka
except ValueError:
messagebox.showerror("Error", "Masukkan nilai Level_Gn yang valid!")
return None, None, None
```
### Penjelasan:
1. **Gn_Cyan_Atas**:
- Setiap `Level_Gn` menentukan kombinasi unik antara `ID` dan `kolom`.
- Fungsi `level_gn_gn_cyan_atas` mengembalikan `ID` dan `kolom` yang sesuai dengan `Level_Gn`.
2. **Sub_Gn_Cyan_Atas**:
- Setiap `Level_Gn` menentukan kombinasi unik `ID`, `kolom`, dan juga nilai modifikasi angka yang diperlukan untuk mengurangi setiap karakter angka dalam kolom yang dipilih.
- Fungsi `level_gn_sub_gn_cyan_atas` mengembalikan `ID`, `kolom`, dan nilai `modifikasi_angka` yang sesuai dengan `Level_Gn`.
3. **Modifikasi Angka**:
- `modifikasi_angka` digunakan untuk mengurangi setiap karakter angka dalam data sesuai dengan ketentuan.
4. **Error Handling**:
- Fungsi akan memberikan pesan kesalahan jika `Level_Gn` yang dimasukkan tidak valid atau tidak sesuai dengan rentang yang telah ditentukan.
Apakah implementasi ini sudah sesuai dengan kebutuhan Anda?
Bisakah isi kode dari kedua fungsi tersebut yaitu fungsi level_gn_gn_cyan_atas, dan fungsi level_gn_sub_gn_cyan_atas, keduanya dijadikan dalam satu fungsi saja yaitu fungsi level_gn
Tentu, kita bisa menggabungkan kedua fungsi tersebut menjadi satu fungsi `level_gn`. Fungsi ini akan menangani logika untuk kedua tabel, yaitu `Gn_Cyan_Atas` dan `Sub_Gn_Cyan_Atas`, berdasarkan input dari `Level_Gn`.
Berikut adalah implementasi fungsi gabungan `level_gn`:
```python
def level_gn(table_name):
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Variabel awal untuk ID, kolom, dan modifikasi angka (hanya digunakan untuk Sub_Gn_Cyan_Atas)
id_selected = None
kolom_selected = None
modifikasi_angka = 0 # Default 0, tidak ada pengurangan
if table_name == 'Gn_Cyan_Atas':
# Logika untuk tabel Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_5'
elif level_gn_selected == 2:
id_selected = 2
kolom_selected = 'Bass_1'
elif level_gn_selected == 7:
id_selected = 2
kolom_selected = 'Bass_3'
elif level_gn_selected == 9:
id_selected = 2
kolom_selected = 'Bass_4'
elif level_gn_selected == 12:
id_selected = 2
kolom_selected = 'Bass_5'
elif level_gn_selected == 3:
id_selected = 3
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 3
kolom_selected = 'Bass_2'
elif level_gn_selected == 8:
id_selected = 3
kolom_selected = 'Bass_3'
elif level_gn_selected == 10:
id_selected = 3
kolom_selected = 'Bass_4'
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None
elif table_name == 'Sub_Gn_Cyan_Atas':
# Logika untuk tabel Sub_Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -1
elif level_gn_selected == 9:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -2
elif level_gn_selected == 2:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -1
elif level_gn_selected == 10:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -2
elif level_gn_selected == 3:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 7:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -1
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -2
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_4'
elif level_gn_selected == 8:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -1
elif level_gn_selected == 12:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -2
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None, None
else:
messagebox.showerror("Error", "Nama tabel tidak valid!")
return None, None, None
# Menyisipkan ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
entry_id.insert(0, str(id_selected))
entry_kolom.delete(0, 'end')
entry_kolom.insert(0, kolom_selected)
if table_name == 'Gn_Cyan_Atas':
return id_selected, kolom_selected
elif table_name == 'Sub_Gn_Cyan_Atas':
return id_selected, kolom_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` yang menentukan apakah fungsi tersebut akan bekerja dengan `Gn_Cyan_Atas` atau `Sub_Gn_Cyan_Atas`.
2. **Logika Khusus untuk Setiap Tabel:**
- Jika `table_name` adalah `'Gn_Cyan_Atas'`, maka logika khusus untuk tabel tersebut akan dijalankan.
- Jika `table_name` adalah `'Sub_Gn_Cyan_Atas'`, maka logika khusus untuk tabel tersebut akan dijalankan, termasuk penghitungan `modifikasi_angka`.
3. **Return Value:**
- Untuk `Gn_Cyan_Atas`, fungsi mengembalikan `id_selected` dan `kolom_selected`.
- Untuk `Sub_Gn_Cyan_Atas`, fungsi mengembalikan `id_selected`, `kolom_selected`, dan `modifikasi_angka`.
4. **Validasi:**
- Fungsi memeriksa apakah `Level_Gn` yang dimasukkan valid (antara 1 hingga 12) dan apakah `table_name` valid (`Gn_Cyan_Atas` atau `Sub_Gn_Cyan_Atas`).
- Jika terjadi kesalahan, pesan error akan ditampilkan dan `None` akan dikembalikan.
Fungsi ini sekarang sudah bisa menangani kedua tabel dengan logika yang berbeda dalam satu fungsi saja. Apakah ini sudah sesuai dengan yang Anda butuhkan?
Untuk mengambil dan menampilkan data gugus nada terpilih dari tabel Gn_Cyan_Atas, dan Sub_Gn_Cyan_Atas yang ditampilkan di entry_bass, dan entry_sub_bass, tolong perbaiki kode berikut karena masih muncul error pada kotak message_box dengan pesan error': Terjadi kesalahan: name 'sub_id_selected' id....
Berikut kode yang butuh diperbaiki:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import sqlite3
from tkinter import Tk, Label, Entry, Button, Frame, StringVar
# Initialize the main window
root = tk.Tk()
root.geometry("690x1390")
root.title("Arah Arus Musik Gn_Cyan_Atas dan Sub_Gn_Cyan_Atas")
# Buat frame_top di dalam inner_frame
frame_top = tk.Frame(root)
frame_top.pack(pady=10) # Pengaturan padding agar tidak terlalu dekat dengan elemen lainnya
frame_top.grid_columnconfigure(0, minsize=-20) # Tambahkan kolom negatif (menggeser ke kiri)
# Letakkan entry dan combobox di bawah
label_level_gn_selected = tk.Label(frame_top, text="Level Gn:")
label_level_gn_selected.grid(row=1, column=0, padx=0, pady=7)
entry_level_gn = tk.Entry(frame_top)
entry_level_gn.grid(row=1, column=1, padx=0, pady=7)
label_id_selected = tk.Label(frame_top, text="ID:")
label_id_selected.grid(row=2, column=0, padx=0, pady=7)
entry_id = tk.Entry(frame_top)
entry_id.grid(row=2, column=1, padx=0, pady=7)
label_progres = tk.Label(frame_top, text="Progres:")
label_progres.grid(row=3, column=0, padx=0, pady=7)
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=0, pady=7)
label_mode = tk.Label(frame_top, text="Mode:")
label_mode.grid(row=4, column=0, padx=0, pady=7)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(frame_top, textvariable=mode_var, values=["naik", "turun"])
mode_combobox.grid(row=4, column=1, padx=0, pady=7)
label_nada = tk.Label(frame_top, text="Nada:")
label_nada.grid(row=5, column=0, padx=0, 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=0, pady=5)
# Hapus label, entry field, dan combobox untuk Progres dan Mode yang tidak digunakan lagi
# abel_progres.grid_forget()
# progres_combobox.grid_forget()
# label_mode.grid_forget()
# mode_combobox.grid_forget()
# Fungsi untuk mengambil data Gn_Cyan_Bawah dari database 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 Sub_Gn_Cyan_Bawah dari database 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 sub bass berdasarkan progres
def adjust_sub_bass_value(sub_bass_value, progres):
if sub_bass_value.isdigit():
adjusted_value = ''.join(str(int(char)) if char.isdigit() else char for char in sub_bass_value)
else:
adjusted_value = sub_bass_value
return adjusted_value
# Fungsi untuk memilih nada Bass, dan Sub Bass
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()
if id_selected is None or sub_id_selected is None:
return
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
# Mengambil data dari tabel Gn_Cyan_Atas berdasarkan ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2,, Bass_3, Bass_4, Bass_5 FROM Gn_Cyan_Atas WHERE ID = ?", (id_selected,))
data_gn_cyan_atas = cursor.fetchone()
# Mengambil data dari tabel Sub_Gn_Cyan_Atas berdasarkan Sub_ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Sub_Gn_Cyan_Atas WHERE Sub_ID = ?", (1))
data_sub_gn_cyan_atas = cursor.fetchone()
conn.close()
# Logika untuk mengisi entry_bass berdasarkan data Gn_Cyan_Atas
if data_gn_cyan_atas:
if level_gn_selected == 1:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 2:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected == 3:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 4:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 5:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 6:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 7:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected == 8:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
# Setiap logika level_gn bisa ditambahkan disini...
# Logika untuk mengisi entry_sub_bass berdasarkan data Sub_Gn_Cyan_Atas
if data_sub_gn_cyan_atas:
if level_gn_selected == 1:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 2:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[1])
elif level_gn_selected == 3:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
elif level_gn_selected == 4:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 5:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
elif level_gn_selected == 6:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 7:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[1])
elif level_gn_selected == 8:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
# Setiap logika level_gn bisa ditambahkan disini...
except Exception as e:
messagebox.showerror("Error", f"Terjadi kesalahan: {str(e)}")
# Fungsi untuk memastikan urutan Level_Gn berdsarkan ID dan kolom
def level_gn(table_name):
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Variabel awal untuk ID, kolom, dan modifikasi angka (hanya digunakan untuk Sub_Gn_Cyan_Atas)
id_selected = None
kolom_selected = None
modifikasi_angka = 0 # Default 0, tidak ada pengurangan
if table_name == 'Gn_Cyan_Atas':
# Logika untuk tabel Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_5'
elif level_gn_selected == 2:
id_selected = 2
kolom_selected = 'Bass_1'
elif level_gn_selected == 7:
id_selected = 2
kolom_selected = 'Bass_3'
elif level_gn_selected == 9:
id_selected = 2
kolom_selected = 'Bass_4'
elif level_gn_selected == 12:
id_selected = 2
kolom_selected = 'Bass_5'
elif level_gn_selected == 3:
id_selected = 3
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 3
kolom_selected = 'Bass_2'
elif level_gn_selected == 8:
id_selected = 3
kolom_selected = 'Bass_3'
elif level_gn_selected == 10:
id_selected = 3
kolom_selected = 'Bass_4'
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None
elif table_name == 'Sub_Gn_Cyan_Atas':
# Logika untuk tabel Sub_Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -1
elif level_gn_selected == 9:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -2
elif level_gn_selected == 2:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -1
elif level_gn_selected == 10:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -2
elif level_gn_selected == 3:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 7:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -1
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -2
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_4'
elif level_gn_selected == 8:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -1
elif level_gn_selected == 12:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -2
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None, None
else:
messagebox.showerror("Error", "Nama tabel tidak valid!")
return None, None, None
# Menyisipkan ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
entry_id.insert(0, str(id_selected))
entry_kolom.delete(0, 'end')
entry_kolom.insert(0, kolom_selected)
if table_name == 'Gn_Cyan_Atas':
return id_selected, kolom_selected
elif table_name == 'Sub_Gn_Cyan_Atas':
return id_selected, kolom_selected, modifikasi_angka
except ValueError:
messagebox.showerror("Error", "Masukkan nilai Level_Gn yang valid!")
return None, None, None
separator = ttk.Separator(frame_top, orient='horizontal')
separator.grid(row=6, column=0, sticky="ew", pady=10)
# Tombol untuk memilih nada
select_button = tk.Button(frame_top, text="Pilih Nada", bg="green", fg="white", command=pilih_nada)
select_button.grid(row=7, column=1, padx=0, pady=0)
# Bottom Frame
bottom_frame = tk.Frame(root, bg="#e2e2e2")
bottom_frame.pack(side=tk.TOP, fill=tk.X)
# Label Gugusan Nada Terpilih Field
Gn_tetpilih_label = tk.Label(bottom_frame, text="Gugusan- \n Nada Terpilih:")
Gn_tetpilih_label.grid(row=8, column=0, padx=5, pady=5)
#Label dan Entry Ambil Gugusan nada Teroilih
label_bass = tk.Label(bottom_frame, text="Bass Gn Cyan Atas:")
label_bass.grid(row=7, column=1, padx=5, pady=5)
entry_bass = tk.Entry(bottom_frame)
entry_bass.grid(row=8, column=1, padx=5, pady=5)
label_sub_bass = tk.Label(bottom_frame, text="Sub Bass Gn Cyan Atas")
label_sub_bass.grid(row=7, column=2, padx=5, pady=5)
entry_sub_bass = tk.Entry(bottom_frame)
entry_sub_bass.grid(row=8, column=2, padx=5, pady=5)
label_trebel = tk.Label(bottom_frame, text="Trebel Gn Cyan Atas")
label_trebel.grid(row=7, column=3, padx=5, pady=5)
entry_trebel = tk.
Entry(bottom_frame)
entry_trebel.grid(row=8, column=3, padx=5, pady=5)
label_sub_trebel = tk.Label(bottom_frame, text="Sub Trebel Gn Cyan Atas")
label_sub_trebel.grid(row=7, column=4, padx=5, pady=5)
entry_sub_trebel = tk.Entry(bottom_frame)
entry_sub_trebel.grid(row=8, column=4, padx=5, pady=5)
root.mainloop()
Dari penjelasan kode yang Anda berikan, terdapat beberapa hal yang perlu diperhatikan untuk memperbaiki masalah ini:
1. **Pendefinisian `sub_id_selected`**: Error tersebut muncul karena variabel `sub_id_selected` tidak didefinisikan sebelumnya di dalam fungsi `pilih_nada`. Pastikan semua variabel yang digunakan dalam fungsi sudah dideklarasikan dengan benar.
2. **Penggunaan Cursor dan SQL**: Di bagian kode yang mengakses database, pastikan perintah SQL yang digunakan sudah benar. Terutama pada bagian `SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Sub_Gn_Cyan_Atas WHERE Sub_ID = ?` harus dipastikan parameter kedua dari `execute` adalah tuple (perhatikan adanya koma dalam `(?,)`).
Berikut adalah kode yang telah diperbaiki:
```python
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 Gn_Cyan_Atas dan Sub_Gn_Cyan_Atas")
# Buat frame_top di dalam inner_frame
frame_top = tk.Frame(root)
frame_top.pack(pady=10) # Pengaturan padding agar tidak terlalu dekat dengan elemen lainnya
frame_top.grid_columnconfigure(0, minsize=-20) # Tambahkan kolom negatif (menggeser ke kiri)
# Letakkan entry dan combobox di bawah
label_level_gn_selected = tk.Label(frame_top, text="Level Gn:")
label_level_gn_selected.grid(row=1, column=0, padx=0, pady=7)
entry_level_gn = tk.Entry(frame_top)
entry_level_gn.grid(row=1, column=1, padx=0, pady=7)
label_id_selected = tk.Label(frame_top, text="ID:")
label_id_selected.grid(row=2, column=0, padx=0, pady=7)
entry_id = tk.Entry(frame_top)
entry_id.grid(row=2, column=1, padx=0, pady=7)
label_progres = tk.Label(frame_top, text="Progres:")
label_progres.grid(row=3, column=0, padx=0, pady=7)
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=0, pady=7)
label_mode = tk.Label(frame_top, text="Mode:")
label_mode.grid(row=4, column=0, padx=0, pady=7)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(frame_top, textvariable=mode_var, values=["naik", "turun"])
mode_combobox.grid(row=4, column=1, padx=0, pady=7)
label_nada = tk.Label(frame_top, text="Nada:")
label_nada.grid(row=5, column=0, padx=0, 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=0, pady=5)
entry_bass = tk.Entry(frame_top)
entry_bass.grid(row=6, column=1, padx=0, pady=7)
entry_sub_bass = tk.Entry(frame_top)
entry_sub_bass.grid(row=7, column=1, padx=0, pady=7)
# Fungsi untuk memilih nada Bass, dan Sub Bass
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()
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
# Mengambil data dari tabel Gn_Cyan_Atas berdasarkan ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Gn_Cyan_Atas WHERE ID = ?", (id_selected,))
data_gn_cyan_atas = cursor.fetchone()
# Mengambil data dari tabel Sub_Gn_Cyan_Atas berdasarkan Sub_ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Sub_Gn_Cyan_Atas WHERE Sub_ID = ?", (1,))
data_sub_gn_cyan_atas = cursor.fetchone()
conn.close()
# Logika untuk mengisi entry_bass berdasarkan data Gn_Cyan_Atas
if data_gn_cyan_atas:
if level_gn_selected == 1:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 2:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected == 3:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 4:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 5:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 6:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 7:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected == 8:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
# Logika untuk mengisi entry_sub_bass berdasarkan data Sub_Gn_Cyan_Atas
if data_sub_gn_cyan_atas:
if level_gn_selected == 1:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 2:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[1])
elif level_gn_selected == 3:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
elif level_gn_selected == 4:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 5:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
elif level_gn_selected == 6:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 7:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[1])
elif level_gn_selected == 8:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
except Exception as e:
messagebox.showerror("Error", f"Terjadi kesalahan: {str(e)}")
# Tombol untuk menjalankan fungsi pilih_nada
button_pilih_nada = tk.Button(root, text="Pilih Nada", command=pilih_nada)
button_pilih_nada.pack(pady=20)
root.mainloop()
```
**Perbaikan Utama:**
1. **Sub_ID**: Saya menghapus referensi `sub_id_selected` yang tidak didefinisikan. Sebagai gantinya, saya menggunakan nilai `1` secara langsung ketika mengambil data dari `Sub_Gn_Cyan_Atas`. Jika Anda memiliki cara untuk menentukan `sub_id_selected`, masukkan nilai tersebut sesuai kebutuhan.
2. **Penanganan SQL**: Memastikan bahwa parameter untuk query SQL diberikan sebagai tuple, bahkan jika hanya ada satu parameter (misalnya, `(1,)`).
Dengan perubahan ini, error yang sebelumnya Anda alami seharusnya tidak muncul lagi. Jika masih ada masalah, mungkin ada kebutuhan untuk mengecek sumber data atau alur logika lebih lanjut.
Kode keseluruhan untuk memilih dan menampilkan data terpilih dari Gn_Cyan_Atas, dan Sub_Gn_Cyan_Atas adalah seperti berikut ini, tapi masih ada salah di baris 132 hingga 157, pemilihan data Bass dari Sub_Gn_Cyan_Atas di level_gn 5 hingga level_gn 12 yang harus memakai fungsi adjust_sub_bass_value. Jadi tolong perbaiki kode isi fungsi def adjust_sub_bass_value(), dan fungsi pilih_nada untuk Sub_Gn_Cyan_Atas di level_gn 6, hingga level_gn 12. Berikut kode yang butuh diperbaiki:
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 Gn_Cyan_Atas dan Sub_Gn_Cyan_Atas")
# Buat frame_top di dalam inner_frame
frame_top = tk.Frame(root)
frame_top.pack(pady=10) # Pengaturan padding agar tidak terlalu dekat dengan elemen lainnya
frame_top.grid_columnconfigure(0, minsize=-20) # Tambahkan kolom negatif (menggeser ke kiri)
# Letakkan entry dan combobox di bawah
label_level_gn_selected = tk.Label(frame_top, text="Level Gn:")
label_level_gn_selected.grid(row=1, column=0, padx=0, pady=7)
entry_level_gn = tk.Entry(frame_top)
entry_level_gn.grid(row=1, column=1, padx=0, pady=7)
label_id_selected = tk.Label(frame_top, text="ID:")
label_id_selected.grid(row=2, column=0, padx=0, pady=7)
entry_id = tk.Entry(frame_top)
entry_id.grid(row=2, column=1, padx=0, pady=7)
label_progres = tk.Label(frame_top, text="Progres:")
label_progres.grid(row=3, column=0, padx=0, pady=7)
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=0, pady=7)
label_mode = tk.Label(frame_top, text="Mode:")
label_mode.grid(row=4, column=0, padx=0, pady=7)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(frame_top, textvariable=mode_var, values=["naik", "turun"])
mode_combobox.grid(row=4, column=1, padx=0, pady=7)
label_nada = tk.Label(frame_top, text="Nada:")
label_nada.grid(row=5, column=0, padx=0, 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=0, pady=5)
# Fungsi untuk menyesuaikan nilai sub bass berdasarkan progres
def adjust_sub_bass_value(sub_bass_value, progres):
if sub_bass_value.isdigit():
adjusted_value = ''.join(str(int(char) - modifikasi_angka) if char.isdigit() else char for char in sub_bass_value)
else:
adjusted_value = sub_bass_value
return adjusted_value
# Fungsi untuk memilih nada Bass, dan Sub Bass
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()
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
# Mengambil data dari tabel Gn_Cyan_Atas berdasarkan ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Gn_Cyan_Atas WHERE ID = ?", (id_selected,))
data_gn_cyan_atas = cursor.fetchone()
# Mengambil data dari tabel Sub_Gn_Cyan_Atas berdasarkan Sub_ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Sub_Gn_Cyan_Atas WHERE Sub_ID = ?", (1,))
data_sub_gn_cyan_atas = cursor.fetchone()
conn.close()
# Logika untuk mengisi entry_bass berdasarkan data Gn_Cyan_Atas
if data_gn_cyan_atas:
if level_gn_selected == 1:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 2:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 3:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected == 4:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected == 5:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected == 6:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 7:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 8:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected == 9:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[3])
elif level_gn_selected == 10:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[3])
elif level_gn_selected == 11:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[4])
elif level_gn_selected == 12:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[4])
# Logika untuk mengisi entry_sub_bass berdasarkan data Sub_Gn_Cyan_Atas
if data_sub_gn_cyan_atas:
if level_gn_selected == 1:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[0])
elif level_gn_selected == 2:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[1])
elif level_gn_selected == 3:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[2])
elif level_gn_selected == 4:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[3])
elif level_gn_selected == 5:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[0], modifikasi_angka - 1)
elif level_gn_selected == 6:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[1], modifikasi_angka - 1)
elif level_gn_selected == 7:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[2], modifikasi_angka - 1)
elif level_gn_selected == 8:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[3], modifikasi_angka - 1)
elif level_gn_selected == 9:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[0], modifikasi_angka - 2)
elif level_gn_selected == 10:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[1], modifikasi_angka - 2)
elif level_gn_selected == 11:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[2], modifikasi_angka - 2)
elif level_gn_selected == 12:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_value(data_sub_gn_cyan_atas[3], modifikasi_angka - 2)
except Exception as e:
messagebox.showerror("Error", f"Terjadi kesalahan: {str(e)}")
# Fungsi untuk memastikan urutan Level_Gn berdsarkan ID dan kolom
def level_gn(table_name):
try:
level_gn_selected = int(entry_level_gn.get()) # Mendapatkan Level_Gn dari input
# Variabel awal untuk ID, kolom, dan modifikasi angka (hanya digunakan untuk Sub_Gn_Cyan_Atas)
id_selected = None
kolom_selected = None
modifikasi_angka = 0 # Default 0, tidak ada pengurangan
if table_name == 'Gn_Cyan_Atas':
# Logika untuk tabel Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_5'
elif level_gn_selected == 2:
id_selected = 2
kolom_selected = 'Bass_1'
elif level_gn_selected == 7:
id_selected = 2
kolom_selected = 'Bass_3'
elif level_gn_selected == 9:
id_selected = 2
kolom_selected = 'Bass_4'
elif level_gn_selected == 12:
id_selected = 2
kolom_selected = 'Bass_5'
elif level_gn_selected == 3:
id_selected = 3
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 3
kolom_selected = 'Bass_2'
elif level_gn_selected == 8:
id_selected = 3
kolom_selected = 'Bass_3'
elif level_gn_selected == 10:
id_selected = 3
kolom_selected = 'Bass_4'
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None
elif table_name == 'Sub_Gn_Cyan_Atas':
# Logika untuk tabel Sub_Gn_Cyan_Atas
if level_gn_selected == 1:
id_selected = 1
kolom_selected = 'Bass_1'
elif level_gn_selected == 5:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -1
elif level_gn_selected == 9:
id_selected = 1
kolom_selected = 'Bass_1'
modifikasi_angka = -2
elif level_gn_selected == 2:
id_selected = 1
kolom_selected = 'Bass_2'
elif level_gn_selected == 6:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -1
elif level_gn_selected == 10:
id_selected = 1
kolom_selected = 'Bass_2'
modifikasi_angka = -2
elif level_gn_selected == 3:
id_selected = 1
kolom_selected = 'Bass_3'
elif level_gn_selected == 7:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -1
elif level_gn_selected == 11:
id_selected = 1
kolom_selected = 'Bass_3'
modifikasi_angka = -2
elif level_gn_selected == 4:
id_selected = 1
kolom_selected = 'Bass_4'
elif level_gn_selected == 8:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -1
elif level_gn_selected == 12:
id_selected = 1
kolom_selected = 'Bass_4'
modifikasi_angka = -2
else:
messagebox.showerror("Error", "Level_Gn harus antara 1 hingga 12.")
return None, None, None
else:
messagebox.showerror("Error", "Nama tabel tidak valid!")
return None, None, None
# Menyisipkan ID dan kolom yang dipilih ke dalam entry box
entry_id.delete(0, 'end')
entry_id.insert(0, str(id_selected))
entry_kolom.delete(0, 'end')
entry_kolom.insert(0, kolom_selected)
if table_name == 'Gn_Cyan_Atas':
return id_selected, kolom_selected
elif table_name == 'Sub_Gn_Cyan_Atas':
return id_selected, kolom_selected, modifikasi_angka
except ValueError:
messagebox.showerror("Error", "Masukkan nilai Level_Gn yang valid!")
return None, None, None
label_bass_gn_cyan_atas = tk.Label(frame_top, text="Bass Gn_Cyan_Atas:")
label_bass_gn_cyan_atas.grid(row=8, column=0, padx=0, pady=7)
entry_bass = tk.Entry(frame_top)
entry_bass.grid(row=8, column=1, padx=0, pady=7)
#label dan entry
label_bass_sub_gn_cyan_atas = tk.Label(frame_top, text="Sub Bass Gn_Cyan_Atas:")
label_bass_sub_gn_cyan_atas.grid(row=9, column=0, padx=0, pady=7)
entry_sub_bass = tk.Entry(frame_top)
entry_sub_bass.grid(row=9, column=1, padx=0, pady=7)
separator = ttk.Separator(frame_top,
orient='horizontal')
separator.grid(row=7, column=0, sticky="ew", pady=15)
# Tombol untuk menjalankan fungsi pilih_nada
button_pilih_nada = tk.Button(frame_top, text="Pilih Nada", bg="lightgreen", command=pilih_nada)
button_pilih_nada.grid(row=6, column=1, padx=0, pady=7)
root.mainloop()
Untuk memperbaiki kode pada fungsi `adjust_sub_bass_value()` dan `pilih_nada()`, saya telah melakukan beberapa penyesuaian agar dapat menangani data dari `Sub_Gn_Cyan_Atas` di level_gn 5 hingga 12 dengan benar. Berikut adalah perbaikan yang diperlukan:
1. **Fungsi `adjust_sub_bass_value()`**:
- Fungsi ini sekarang akan menerima dua parameter: `sub_bass_value` dan `modifikasi_angka`. `modifikasi_angka` digunakan untuk menentukan pengurangan pada karakter angka di `sub_bass_value`.
2. **Fungsi `pilih_nada()`**:
- Fungsi ini diubah untuk menggunakan `adjust_sub_bass_value()` pada level_gn 5 hingga 12 untuk `Sub_Gn_Cyan_Atas`.
### Kode yang telah diperbaiki:
```python
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import sqlite3
# Fungsi untuk menyesuaikan nilai sub bass berdasarkan progres
def adjust_sub_bass_value(sub_bass_value, modifikasi_angka):
adjusted_value = ''.join(str(int(char) - modifikasi_angka) if char.isdigit() else char for char in sub_bass_value)
return adjusted_value
# Fungsi untuk memilih nada Bass, dan Sub Bass
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()
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
# Mengambil data dari tabel Gn_Cyan_Atas berdasarkan ID dan kolom
cursor.execute("SELECT Bass_1, Bass_2, Bass_3, Bass_4, Bass_5 FROM Gn_Cyan_Atas WHERE ID = ?", (id_selected,))
data_gn_cyan_atas = cursor.fetchone()
Setelah data_gn_cyan_atas = , lanjutkan kodenya hingga selesai
Baik, berikut adalah kelanjutan kode setelah `data_gn_cyan_atas = ...` hingga selesai, termasuk perbaikan pada fungsi `adjust_sub_bass_value()` dan logika untuk memilih dan menampilkan data dari tabel `Sub_Gn_Cyan_Atas` untuk level_gn 5 hingga 12:
```python
# Logika untuk memilih dan menampilkan data Gn_Cyan_Atas
if data_gn_cyan_atas:
if level_gn_selected in [1, 2, 3]:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[0])
elif level_gn_selected in [4, 5]:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[1])
elif level_gn_selected in [6, 7, 8]:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[2])
elif level_gn_selected in [9, 10]:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[3])
elif level_gn_selected in [11, 12]:
entry_bass.delete(0, tk.END)
entry_bass.insert(0, data_gn_cyan_atas[4])
# Logika untuk memilih dan menampilkan data Sub_Gn_Cyan_Atas
if data_sub_gn_cyan_atas:
if level_gn_selected in [1, 2, 3, 4]:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, data_sub_gn_cyan_atas[level_gn_selected - 1])
elif level_gn_selected in [5, 6, 7, 8]:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_sub_bass_value(data_sub_gn_cyan_atas[level_gn_selected - 5], 1))
elif level_gn_selected in [9, 10, 11, 12]:
entry_sub_bass.delete(0, tk.END)
entry_sub_bass.insert(0, adjust_sub_bass_value(data_sub_gn_cyan_atas[level_gn_selected - 9], 2))
except Exception as e:
messagebox.showerror("Error", f"Terjadi kesalahan: {str(e)}")
# Fungsi untuk menyesuaikan nilai sub bass berdasarkan progres
def adjust_sub_bass_value(sub_bass_value, modifikasi_angka):
if sub_bass_value.isdigit():
# Menyesuaikan nilai dengan mengurangi setiap digit dengan modifikasi_angka
adjusted_value = ''.join(str(int(char) - modifikasi_angka) if char.isdigit() else char for char in sub_bass_value)
else:
adjusted_value = sub_bass_value
return adjusted_value
# Menambahkan tombol untuk memilih nada
pilih_nada_button = tk.Button(frame_top, text="Pilih Nada", command=pilih_nada)
pilih_nada_button.grid(row=6, column=1, padx=0, pady=7)
# Menambahkan entry untuk hasil
entry_bass = tk.Entry(root)
entry_bass.pack(pady=10)
entry_sub_bass = tk.Entry(root)
entry_sub_bass.pack(pady=10)
# Menjalankan main loop
root.mainloop()
```
### Penjelasan:
- **Logika Pemilihan Data:** Pada bagian ini, data dari `Gn_Cyan_Atas` diambil berdasarkan `level_gn_selected` dan diisi ke `entry_bass`. Untuk `Sub_Gn_Cyan_Atas`, data yang diambil akan diubah dengan fungsi `adjust_sub_bass_value()` untuk `level_gn` 5 hingga 12.
- **Fungsi `adjust_sub_bass_value()`:** Fungsi ini digunakan untuk menyesuaikan nilai sub bass dengan mengurangi setiap digit dari nilai asli sesuai dengan angka modifikasi yang ditentukan (1 atau 2). Jika nilai bukan angka, nilai asli tetap digunakan.
- **GUI:** Tampilan GUI telah diperluas dengan menambahkan dua `Entry` untuk menampilkan hasil (`entry_bass` dan `entry_sub_bass`) dan sebuah tombol untuk menjalankan fungsi `pilih_nada()`.
Pastikan kode ini berfungsi sesuai dengan kebutuhan Anda dengan menjalankan program dan melakukan uji coba pada setiap level_gn.
Bersambung ke ...
LOGIKA YANG DITERAPKAN PADA DATA TABEL Gn_Cyan_Atas, DAN TABEL Sub_Gn_Cyan_Atas (Part-2)
Komentar
Posting Komentar
This Message