Langsung ke konten utama

LOGIKA YANG DITERAPKAN PADA DATA TABEL Gn_Cyan_Atas, DAN TABEL Sub_Gn_Cyan_Atas (Part-2)

LOGIKA YANG DITERAPKAN PADA DATA BASS DARI TABEL Gn_Cyan_Atas, DAN TABEL Sub_Gn_Cyan_Atas (Part-2)


Pada kode, tolong tambahkan fungsionalitas di setiap lwvel_gn yang diinput oleh user. Bila user menginput di entry_level_gn dan memasukkan angka inputan, yaitu:

1. Bila user menginput level_gn = 1, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 1". Sehingga user harus menginput di entry_id = 1 (tidak boleh menginput angka yang lain, selain 1).

2. Bila user menginput level_gn = 2, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 2". Sehingga user harus menginput di entry_id = 2 (tidak boleh menginput angka yang lain, selain 2).

3. Bila user menginput level_gn = 3, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 3". Sehingga user harus menginput di entry_id = 3 (tidak boleh menginput angka yang lain, selain 3)..

4. Bila user menginput level_gn = 4, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 1". Sehingga user harus menginput di entry_id = 1 (tidak boleh menginput angka yang lain, selain 1).

5. Bila user menginput level_gn = 5, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 3". Sehingga user harus menginput di entry_id = 3 (tidak boleh menginput angka yang lain, selain 3).

6. Bila user menginput level_gn = 6, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 1". Sehingga user harus menginput di entry_id = 1 (tidak boleh menginput angka yang lain, selain 1).

7. Bila user menginput level_gn = 7, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 2". Sehingga user harus menginput di entry_id = 2 (tidak boleh menginput angka yang lain, selain 2)..

8. Bila user menginput level_gn = 8, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 3". Sehingga user harus menginput di entry_id = 3 (tidak boleh menginput angka yang lain, selain 3).

9. Bila user menginput level_gn = 9, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 2". Sehingga user harus menginput di entry_id = 2 (tidak boleh menginput angka yang lain, selain 2).

10. Bila user menginput level_gn = 10, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 3". Sehingga user harus menginput di entry_id = 3 (tidak boleh menginput angka yang lain, selain 3).

11. Bila user menginput level_gn = 11, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 1". Sehingga user harus menginput di entry_id = 1 (tidak boleh menginput angka yang lain, selain 1)..

12. Bila user menginput level_gn = 12, maka tampilkan message_box dengan teks pesan "Lanjut dengan memasukkan input ID = 2". Sehingga user harus menginput di entry_id = 2 (tidak boleh menginput angka yang lain, selain 2).

Kemudian jika user menginput level_gn diluar range 1 hingga 12 yaitu bila user menginput level_gn = 0, atau level_gn >= 13, maka tampilkan message_box dengan teks pesan "Masukkan input yang benar. \nInput Level Gn adalah 1 hingga 12"

 

Baik, berikut adalah penambahan fungsionalitas pada kode Anda yang menyesuaikan perilaku berdasarkan input `level_gn` oleh user. Kode ini akan menampilkan pesan yang sesuai berdasarkan aturan yang Anda tentukan:

```python

import tkinter as tk

from tkinter import ttk, messagebox


root = tk.Tk()

root.title("Input Level Gn dan ID")


# Definisikan entry untuk level_gn dan id

entry_level_gn = tk.Entry(root)

entry_level_gn.pack(pady=10)


entry_id = tk.Entry(root)

entry_id.pack(pady=10)


# Fungsi untuk menampilkan messagebox dan memvalidasi input level_gn

def validate_level_gn():

    try:

        level_gn = int(entry_level_gn.get())


        if level_gn == 1:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 1")

            set_id_entry(1)

        elif level_gn == 2:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 2")

            set_id_entry(2)

        elif level_gn == 3:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 3")

            set_id_entry(3)

        elif level_gn == 4:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 1")

            set_id_entry(1)

        elif level_gn == 5:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 3")

            set_id_entry(3)

        elif level_gn == 6:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 1")

            set_id_entry(1)

        elif level_gn == 7:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 2")

            set_id_entry(2)

        elif level_gn == 8:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 3")

            set_id_entry(3)

        elif level_gn == 9:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 2")

            set_id_entry(2)

        elif level_gn == 10:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 3")

            set_id_entry(3)

        elif level_gn == 11:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 1")

            set_id_entry(1)

        elif level_gn == 12:

            messagebox.showinfo("Info", "Lanjut dengan memasukkan input ID = 2")

            set_id_entry(2)

        else:

            messagebox.showerror("Error", "Masukkan input yang benar.\nInput Level Gn adalah 1 hingga 12")

            reset_entries()


    except ValueError:

        messagebox.showerror("Error", "Input harus berupa angka.")

        reset_entries()


# Fungsi untuk mengatur entry ID dan mencegah input selain ID yang valid

def set_id_entry(valid_id):

    entry_id.delete(0, tk.END)

    entry_id.insert(0, valid_id)

    entry_id.config(state='readonly') # Membatasi input hanya pada ID yang valid


# Fungsi untuk mereset entries jika input level_gn tidak valid

def reset_entries():

    entry_level_gn.delete(0, tk.END)

    entry_id.config(state='normal')

    entry_id.delete(0, tk.END)


# Tambahkan tombol untuk memvalidasi level_gn

validate_button = tk.Button(root, text="Validate Level Gn", command=validate_level_gn)

validate_button.pack(pady=10)


# Menjalankan main loop

root.mainloop()

```


### Penjelasan:

1. **Fungsi `validate_level_gn()`**: Fungsi ini memeriksa input `level_gn` dan menampilkan pesan yang sesuai berdasarkan nilai yang diinput. Jika `level_gn` berada di luar rentang 1 hingga 12 atau input bukan angka, maka akan muncul pesan kesalahan dan entri akan direset.

2. **Fungsi `set_id_entry()`**: Fungsi ini mengatur input `ID` sesuai dengan aturan yang Anda tentukan, serta membatasi pengguna untuk hanya bisa menginput `ID` yang valid dengan mengatur state entry menjadi `readonly`.

3. **Fungsi `reset_entries()`**: Jika input `level_gn` tidak valid, maka entri akan direset.

4. **Interaksi GUI**: Pengguna menginput `level_gn` pada entry pertama, kemudian setelah menekan tombol "Validate Level Gn", pesan yang sesuai akan muncul, dan entry `ID` akan diatur agar sesuai dengan level yang diinput.

Anda dapat menjalankan kode ini di lingkungan tkinter untuk melihat hasilnya secara langsung.


Tolong tambahkan fungsi untuk menghapus secara otomatis semua inputan oleh user, termasuk inputan entry_level_gn hasil validasi..

Berikut contoh kodenya yang ditambahkan di baris akhir pada def pilih_nada():

    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('')

Maksud saya, untuk membersihkan dan me_reset entry dan combobox setelah tombol pilih_nada ditekan oleh user (bukan setelah validasi selesai, tapi setelah tombol pilih_nada ditekan). Sehingga kode finally: # Bersihkan atau reset entry dan combobox setelah validasi selesai entry_level_gn.delete(0, 'end') entry_id.delete(0, 'end') progres_combobox.set('') mode_combobox.set('') nada_combobox.set('')Kode tersebut diletakkan dibagian baris terakhir dari fungsi def pilih_nada().


Tentu, saya akan menambahkan fungsi untuk menghapus secara otomatis semua inputan oleh user setelah validasi selesai. Saya akan menambahkan bagian kode yang membersihkan inputan user di akhir fungsi pilih_nada() yang telah ada, dengan menambahkan finally untuk memastikan entri selalu dibersihkan, terlepas dari hasil validasi.

Blok finally:

Bagian ini memastikan bahwa setelah tombol pilih_nada ditekan dan fungsi pilih_nada() selesai dijalankan, semua inputan pada entry dan combobox akan dihapus atau direset.

Berikut adalah cara menambahkan kode pembersihan di bagian akhir fungsi pilih_nada() dengan benar:

Modifikasi pada Fungsi pilih_nada()

.....

def pilih_nada():

    try:

        # Logika untuk memilih nada di sini

        # (Tambahkan kode yang relevan untuk fungsi ini)

        pass # Placeholder, gantikan dengan logika sebenarnya


    finally:

        # Bersihkan atau reset entry dan combobox setelah tombol pilih_nada ditekan

        entry_level_gn.delete(0, 'end')

        entry_id.delete(0, 'end')

        progres_combobox.set('')

        mode_combobox.set('')

        nada_combobox.set('')


Penjelasan:

Bagian finally:

Kode dalam blok finally akan selalu dieksekusi setelah blok try selesai, baik hasilnya sukses ataupun gagal.Dalam hal ini, semua entry dan combobox akan direset atau dibersihkan setelah proses validasi level_gn, dan tombol pilih_nada ditekan.

Setelah user menginput level_gn, menyelesaikan validasi, dan menekan tombol pilih_nada, semua inputan pada entry_level_gn, entry_id, dan combobox akan otomatis dihapus atau direset, membuat user siap untuk memasukkan input baru.


Setelah menambah fungsi untuk membersihkan dan me_reset entry serta combobox, applikasi berjalan dengan baik, tapi setelah tombol pilih_nada ditekan, karakter angka pada entry_id yang read only hasil dari validasi tidak mau terhapus


Jika `entry_id` tidak terhapus atau direset setelah tombol `pilih_nada` ditekan, kemungkinan ada beberapa penyebab yang bisa terjadi, terutama karena `entry_id` dalam keadaan read-only. Untuk mengatasi masalah ini, ada beberapa pendekatan yang dapat Anda coba:

### Solusi 1: Menghapus Status Read-Only Sebelum Reset

Sebelum menghapus isi dari `entry_id`, Anda bisa sementara waktu menonaktifkan status read-only, kemudian menghapus isinya, dan mengembalikan status read-only kembali.

Berikut adalah langkah-langkahnya:

1. **Ubah Mode Read-Only Sementara Waktu:**

   - Sebelum menghapus, ubah state dari `entry_id` menjadi normal (`'normal'`).

   - Hapus isinya.

   - Kembalikan state menjadi read-only (`'readonly'`).

### Contoh Kode:


```python

def pilih_nada():

    try:

        # Logika untuk memilih nada di sini

        pass # Placeholder, gantikan dengan logika sebenarnya


    finally:

        # Menghapus status read-only sementara

        entry_id.config(state='normal')

        

        # Bersihkan atau reset entry dan combobox setelah tombol pilih_nada ditekan

        entry_level_gn.delete(0, 'end')

        entry_id.delete(0, 'end')

        progres_combobox.set('')

        mode_combobox.set('')

        nada_combobox.set('')


        # Kembalikan status read-only setelah menghapus isinya

        entry_id.config(state='readonly')

        reset_entries() 

```


### Penjelasan:

- **`entry_id.config(state='normal')`**:

   - Baris ini digunakan untuk mengubah state dari `entry_id` menjadi normal (non-read-only) sehingga bisa dihapus isinya.  

- **`entry_id.config(state='readonly')`**:

   - Setelah isinya dihapus, state dikembalikan menjadi read-only untuk mencegah pengguna melakukan input manual.

### Solusi 2: Menggunakan `update_idletasks()` untuk Memperbarui GUI

Jika masalah masih terjadi, Anda juga bisa menambahkan `self.update_idletasks()` di dalam metode `pilih_nada()` untuk memastikan bahwa semua pembaruan pada GUI dilakukan dengan benar sebelum state read-only diaktifkan kembali.


### Contoh Kode:


```python

def pilih_nada():

    try:

        # Logika untuk memilih nada di sini

        pass # Placeholder, gantikan dengan logika sebenarnya


    finally:

        # Menghapus status read-only sementara

        entry_id.config(state='normal')

        

        # Bersihkan atau reset entry dan combobox setelah tombol pilih_nada ditekan

        entry_level_gn.delete(0, 'end')

        entry_id.delete(0, 'end')

        progres_combobox.set('')

        mode_combobox.set('')

        nada_combobox.set('')


        # Perbarui GUI sebelum mengembalikan state read-only

        self.update_idletasks()

        

        # Kembalikan status read-only setelah menghapus isinya

        entry_id.config(state='readonly')

        reset_entries() 

```

Dengan mengikuti langkah-langkah di atas, `entry_id` seharusnya dapat dihapus dan direset dengan benar meskipun dalam kondisi read-only sebelumnya.



Selesai  CRUD Data Bass....


Berlanjut ke ...

CRUD DATA PADA TABEL Gn_Cyan_Atas, dan Sub_Gn_Cyan_Atas PADA DATA KOLOM Bass DAN KOLOM Trebel (Part-3)



Komentar

Postingan populer dari blog ini

Pemograman R Studio

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

MIGRASI DATABASE DARI SQLite KE MySQL (Part-1)

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

Cara Menjadi Pengembang Front End – Keterampilan Front End Web Dev

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