SPLASH_SCREEN AWAL MEMULAI MEMBUAT APPLIKASI BERBASIS PYTHON
" SPLASH_SCREEN" AWAL MEMULAI MEMBUAT APLIKASI BERBASIS PYTHON
Ada banyak jenis penulisan kode program untuk membuat sebuah file "splash_screen.py" dalam memulai sebuah proyek membuat sebuah aplikasi berbasis bahasa pemrograman python.
Aplikasi yang digunakan dalam penulisan kode python di HP adalah Pydroid3, bisa di download di sini Pydroid3.
Sedangkan menggunakan Laptop/komputer untuk program python ada di sini: Python versi terakhir.
memulai sebuah pembuatan applikasi dengan program python adalah membuat file "splash_screen.py", sebagai contoh membuat applikasi SmartNutriChefAI, seperti:
1. splash_screen konvensional.
Di dalam HP atau Lattop/komputer, buatlah sebuah folder tempat menyimpan file splash_screen.py. Bila di HP ada path: /storage/emulated/0/nama_folder_Anda/...
Lalu
- Buat sebuah gambar dan beri nama gambar (logo.png), lalu simpan di dalam folder yang Anda buat tersebut.
- Di dalam folder tersebut, Buat sebuah file bernama "splash_screen.py" yang berisi kode program, contoh kode programnya, berikut ini:
# splash_screen.py
impor tkinter sebagai tk
dari tkinter impor ttk
dari PIL impor Gambar, ImageTk
# Fungsi untuk membuka halaman utama
def buka_halaman_utama():
splash.hancurkan()
tampilkan_halaman_utama()
# Fungsi utama GUI aplikasi
def tampilkan_halaman_utama():
akar = tk.Tk()
root.title("SmartNutriChefAI - Menu Utama")
akar.geometri("360x640")
root.konfigurasi(bg="#f0fff0")
# Judul
label = ttk.Label(root, text="Selamat datang di\nSmartNutriChefAI", font=("Arial", 18, "bold"), background="#f0fff0")
label.pack(pady=20)
# Menampilkan logo
mencoba:
logo_path = "/storage/emulated/0/AppJadi/SmartNutriChefAI/logo.png"
gambar = Gambar.buka(jalur_logo)
gambar = gambar.ubah ukuran((100, 100))
foto = ImageTk.PhotoImage(gambar)
logo_label = tk.Label(root, gambar=foto, bg="#f0fff0")
logo_label.image = foto # menyimpan referensi
logo_label.pack(pady=10)
kecuali Pengecualian sebagai e:
print("Gagal memuat logo :",e)
# Teks deskripsi
deskripsi = tk.Label(root, text="AI untuk saran resep sehat\nberbasis nutrisi Anda", font=("Arial", 12), bg="#f0fff0", fg="#333", justify="center")
deskripsi.pack(pady=20)
# Tombol "Mulai Sekarang"
btn_mulai = tk.Button(root, text="Mulai Sekarang", font=("Arial", 14), bg="#4CAF50", fg="white", lebar=25, tinggi=2, command=root.destroy)
btn_mulai.pack(sisi=”bawah”, pady=30)
root.mainloop()
# Layar Percikan
percikan = tk.Tk()
splash.title("SmartNutriChefAI - Memuat...")
percikan.geometri("500x300")
splash.configure(bg="#4CAF50")
label = ttk.Label(splash, text="SmartNutriChefAI", font=("Helvetica", 24, "tebal"), latar depan="putih", latar belakang="#4CAF50")
label.tempat(relx=0.5, mengandalkan=0.5, jangkar="tengah")
#Tampilkan splash selama 3 detik
splash.after(3000, buka_halaman_utama)
splash.mainloop()
Kode final ini sudah sangat siap digunakan sebagai struktur awal aplikasi SmartNutriChefAI.
Tampilannya sudah mobile-friendly , profesional , dan alurnya jelas . S etelah menekan tombol "Mulai Sekarang" pindah ke halaman input profil atau menu utama.
Tahap selanjutnya,
Buat sebuah file bernama menu_utama.py, lalu simpan sejajar dengan file splash_screen.py di dalam folder tersebut. Isi file ini berisi kode program, contoh kode programnya, berikut ini:
# splash_screen.py
impor tkinter sebagai tk
dari tkinter impor ttk
dari PIL impor Gambar, ImageTk
dari menu_utama import tampilkan_halaman_utama
# Tahap 2: Splash dengan gambar & tombol
def tampilkan_splash_dengan_logo():
splash2 = tk.Tk()
splash2.title("SmartNutriChefAI")
splash2.geometry("690x1390")
splash2.konfigurasi(bg="#f0fff0")
label = ttk.Label(splash2, text="Selamat datang di\nSmartNutriChefAI", font=("Arial", 18, "bold"), background="#f0fff0")
label.pack(pady=20)
# Gambar logo
mencoba:
logo_path = "/storage/emulated/0/AppJadi/SmartNutriChefAI/logo.png"
gambar = Gambar.buka(jalur_logo)
gambar = gambar.ubah ukuran((350, 400))
foto = ImageTk.PhotoImage(gambar)
logo_label = tk.Label(splash2, gambar=foto, bg="#f0fff0")
logo_label.image = foto # Simpan referensi
logo_label.pack(pady=10)
kecuali Pengecualian sebagai e:
print("Gagal memuat logo :",e)
# Deskripsi
deskripsi = tk.Label(
percikan2,
text="AI untuk saran resep sehat\nberbasis nutrisi Anda",
huruf=("Arial", 12),
bg="#f0fff0",
fg="#333",
ratakan="tengah"
)
deskripsi.pack(pady=20)
# Tombol "Mulai Sekarang"
def mulai_aplikasi():
splash2.hancurkan()
buka_menu_utama()
btn_mulai = tk.Button(
percikan2,
text="Mulai Sekarang",
huruf=("Arial", 14),
bg="#4CAF50",
fg="putih",
lebar=25,
tinggi=2,
command=mulai_aplikasi
)
btn_mulai.pack(sisi=”bawah”, pady=30)
splash2.mainloop()
# Tahap 3: Buka halaman menu utama
def buka_menu_utama():
akar = tk.Tk()
root.title("SmartNutriChefAI - Menu Utama")
akar.geometri("690x1390")
root.konfigurasi(bg="#f0fff0")
rangka_utama = tk.Rangka(akar)
main_frame.pack(isi="keduanya", perluas=Benar)
tampilkan_halaman_utama(main_frame)
root.mainloop()
# Tahap 1: Splash memuat awal 3 detik
def tampilkan_splash_awal():
percikan = tk.Tk()
splash.title("SmartNutriChefAI - Memuat...")
percikan.geometri("670x1370")
splash.configure(bg="#4CAF50")
label = ttk.Label(
memercikkan,
teks="SmartNutriChefAI",
font=("Helvetica", 22, "tebal"),
latar depan="putih",
latar belakang="#4CAF50"
)
label.tempat(relx=0.5, mengandalkan=0.5, jangkar="tengah")
# Setelah 3 detik, tutup splash dan buka splash dengan logo
splash.after(3000, lambda: [splash.destroy(), tampilkan_splash_dengan_logo()])
splash.mainloop()
jika __nama__ == "__utama__":
tampilkan_splash_awal()
Setelah tampil splash screen & halaman utama, ketika tombol "Mulai Sekarang" ditekan maka akan masuk ke halaman Menu dari applikasi ini, (kode isi file menu_utama.py harus Anda buat sendiri)
2. splash_screen modern.
Ini membuat splash_screen terbaru yang alurnya rapi dari Splash → Menu Utama → Sub Menu, dst.
Ini file splash_screen.py terbaru yang rapi → menampilkan layar pembuka beberapa detik lalu otomatis berpindah ke menu utama .
📌splash_screen.py
import tkinter as tk
from menu_utama import tampilkan_halaman_utama
def show_splash_screen():
"""Tampilkan splash screen lalu alihkan ke menu utama"""
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("500x350")
splash.configure(bg="white")
# Logo / Judul aplikasi
tk.Label(
splash,
text="SmartNutriChefAI",
font=("Arial", 22, "bold"),
fg="#4CAF50",
bg="white"
).pack(expand=True, pady=30)
# Sub-judul
tk.Label(
splash,
text="by SR Pakpahan",
font=("Arial", 12),
fg="gray",
bg="white"
).pack(pady=10)
# Progress info
tk.Label(
splash,
text="Loading...",
font=("Arial", 11),
fg="black",
bg="white"
).pack(side="bottom", pady=20)
# Setelah 2.5 detik → buka menu utama
splash.after(2500, lambda: open_main_menu(splash))
splash.mainloop()
def open_main_menu(splash_root):
"""Tutup splash screen, buka menu utama"""
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
🔑 Catatan
- Splash → Menu Utama otomatis setelah 2500 ms (2,5 detik).
→ Bisa disesuaikan (splash.after(3000, ...)kalau mau 3 detik). - Judul, warna, teks bisa kamu ganti sesuai branding.
tampilkan_halaman_utamadipanggil darimenu_utama.py→ jadi konsistensi alurnya:
👉 Splash → Menu Utama → Sub Menu (misal Metode Formula MMAG, dll).
3. Splash screen dengan progres bar animasi
Berikut versi GUI dengan progres bar animasi di splash screen biar lebih keren (daripada hanya teks "Loading...")
Kita upgrade splash screen biar lebih keren dengan progresif bar animasi 🎉
Pakai ttk.Progressbarsupaya loading terasa lebih “hidup” sebelum pindah ke Menu Utama .
📌 splash_screen.py(versi dengan bilah kemajuan animasi)
import tkinter as tk
from tkinter import ttk
from menu_utama import tampilkan_halaman_utama
def show_splash_screen():
"""Tampilkan splash screen dengan progress bar animasi"""
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("500x350")
splash.configure(bg="white")
splash.resizable(False, False)
# Judul aplikasi
tk.Label(
splash,
text="SmartNutriChefAI",
font=("Arial", 22, "bold"),
fg="#4CAF50",
bg="white"
).pack(expand=True, pady=30)
# Sub-judul
tk.Label(
splash,
text="by SR Pakpahan",
font=("Arial", 12),
fg="gray",
bg="white"
).pack(pady=10)
# Progress label
progress_label = tk.Label(
splash,
text="Loading...",
font=("Arial", 11),
fg="black",
bg="white"
)
progress_label.pack(pady=10)
# Progress bar
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="determinate"
)
progress.pack(pady=20)
# Animasi progress bar
def animate_progress(value=0):
if value <= 100:
progress["value"] = value
splash.after(30, lambda: animate_progress(value + 2))
else:
open_main_menu(splash)
animate_progress() # mulai animasi
splash.mainloop()
def open_main_menu(splash_root):
"""Tutup splash screen, buka menu utama"""
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
🔑 Catatan
- Bilah kemajuan naik dari
0 → 100dengan interval30 ms.
→ Total durasi sekitar3 detik. Bisa diubah displash.after(30, ...)atau nilai kenaikan+2. - Setelah selesai (
value > 100), otomatis buka menu utama . - Bisa diganti mode
indeterminatekalau mau animasi bolak-balik, tapi biasanya progres “naik penuh” lebih enak dilihat.
4. splash screen dengan logo gambar (PNG/JPG)
Berikut versi dengan logo gambar (PNG/JPG) di splash screen biar lebih branding, bukan hanya teks.
Kita bikin splash screen yang lebih profesional dengan gambar logo (PNG/JPG) ditampilkan di atas teks + bilah kemajuan.
Supaya lebih fleksibel, kita pakai PIL (Pillow)untuk mengubah ukuran logo otomatis biar pas.
📌 splash_screen.py(versi dengan gambar logo)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pastikan pillow sudah terinstall
from menu_utama import tampilkan_halaman_utama
# Path logo (ganti sesuai lokasi file logo kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
"""Tampilkan splash screen dengan logo + progress bar animasi"""
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS) # resize biar pas
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img # biar tidak di-garbage-collect
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash,
text="SmartNutriChefAI",
font=("Arial", 22, "bold"),
fg="#4CAF50",
bg="white"
).pack(pady=5)
# Subjudul
tk.Label(
splash,
text="by SR Pakpahan",
font=("Arial", 12),
fg="gray",
bg="white"
).pack(pady=5)
# Progress label
progress_label = tk.Label(
splash,
text="Loading...",
font=("Arial", 11),
fg="black",
bg="white"
)
progress_label.pack(pady=10)
# === Progress bar ===
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="determinate"
)
progress.pack(pady=20)
# === Animasi progress bar ===
def animate_progress(value=0):
if value <= 100:
progress["value"] = value
splash.after(30, lambda: animate_progress(value + 2))
else:
open_main_menu(splash)
animate_progress()
splash.mainloop()
def open_main_menu(splash_root):
"""Tutup splash screen, buka menu utama"""
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
🔑 Catatan
- Simpan logo di path:
(atau ganti/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.pngLOGO_PATHsesuai lokasi logo kamu). - Ukuran logo otomatis di-resize menjadi 150x150 px
- Kalau file logo tidak ditemukan, splash screen tetap jalan dengan teks error
[Logo not found].
5. splash screen dengan animasi fade-in
Berikut versi animasi fade-in (transparansi bertahap) untuk splash screen ini biar makin modern.
Kita upgrade splash screen dengan animasi fade-in (transparansi bertahap) biar tampilannya lebih modern dan smooth.
Di Tkinter, efek fade-in bisa dibuat dengan mengubah nilai -alpha(opacity window) dari 0.0 → 1.0 secara bertahap.
📌 splash_screen.py(logo versi + bilah kemajuan + fade-in)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pastikan pillow sudah terinstall
from menu_utama import tampilkan_halaman_utama
# Path logo (ganti sesuai lokasi file logo kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
"""Tampilkan splash screen dengan logo, fade-in, dan progress bar"""
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Set transparansi awal (0 = full transparan)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
progress_label = tk.Label(
splash, text="Loading...",
font=("Arial", 11), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar ===
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="determinate"
)
progress.pack(pady=20)
# === Animasi fade-in ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in() # mulai fade-in
# === Animasi progress bar ===
def animate_progress(value=0):
if value <= 100:
progress["value"] = value
splash.after(30, lambda: animate_progress(value + 2))
else:
open_main_menu(splash)
animate_progress()
splash.mainloop()
def open_main_menu(splash_root):
"""Tutup splash screen, buka menu utama"""
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
🔑 Perubahan Utama
- Tambah
splash.attributes("-alpha", 0.0)→ supaya splash mulai dari transparan. - Fungsi
fade_in()→ menaikkan opacity0.0 → 1.0secara bertahap denganafter(). - Efek fade-in berjalan bersamaan dengan progres bar.
6. Splash screen dengan efek fade-out transisi
Kalau mau lebih keren lagi, kita bisa membuat efek fade-out saat splash menutup sebelum masuk ke menu utama.
Kita tambahkan juga efek fade-out transisi biar makin mulus.
Kita upgrade lagi splash screen biar ada fade-in → progres → fade-out → menu utama ✨
Triknya sama: kita pakai splash.attributes("-alpha", value)tapi kali ini diturunkan dari 1.0 ke 0.0 sebelum buka menu utama.
📌 splash_screen.py(Fade-in + Progress + Fade-out)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pip install pillow
from menu_utama import tampilkan_halaman_utama
# Path logo (ubah sesuai file logo kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Transparansi awal (fade-in start)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
progress_label = tk.Label(
splash, text="Loading...",
font=("Arial", 11), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar ===
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="determinate"
)
progress.pack(pady=20)
# === Fade-in animasi ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
# === Animasi progress bar ===
def animate_progress(value=0):
if value <= 100:
progress["value"] = value
splash.after(30, lambda: animate_progress(value + 2))
else:
fade_out() # setelah selesai → fade out
animate_progress()
# === Fade-out animasi ===
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
open_main_menu(splash)
splash.mainloop()
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
🔑 Alur Animasi
- Memudar →
0.0 → 1.0 - Progress bar jalan →
0 → 100% - Memudar →
1.0 → 0.0 - Tutup splash, buka
menu utama.
7. Splash screen dengan progres bar konversi (loop tak tentu)
Kalau mau lebih dramatis lagi, bilah kemajuan bisa dibuat warna gradien atau bergaris + mode tak tentu (animasi bergelombang).
Kita buatkan juga versi dengan progres bar konversi (loop tak tentu) supaya lebih hidup?
Kita buat splash screen versi lebih dramatis dengan progresif bar bergaris dan mode indeterminate (alias “gelombang jalan terus” 🚀).
Di tkinter, ttk.Progressbarpunya opsi mode="indeterminate"lalu dijalankan dengan .start(speed)biar jalan otomatis. Kita kombinasikan dengan efek fade-in → jalan → fade-out ✨
📌 splash_screen.py(Progress Bar Gelombang + Animasi Fade)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pip install pillow
from menu_utama import tampilkan_halaman_utama
# Path logo (ubah sesuai file logo kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Transparansi awal (fade-in start)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
progress_label = tk.Label(
splash, text="Loading...",
font=("Arial", 11), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar striped + indeterminate ===
style = ttk.Style()
style.theme_use("clam") # "clam" support striped style
style.configure("Custom.Horizontal.TProgressbar",
troughcolor="white",
bordercolor="white",
background="#4CAF50", # warna isi (hijau)
lightcolor="#81C784", # gradasi lebih terang
darkcolor="#388E3C") # gradasi lebih gelap
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="indeterminate",
style="Custom.Horizontal.TProgressbar"
)
progress.pack(pady=20)
# === Fade-in animasi ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
# Jalankan progress bar indeterminate (animasi bergelombang)
progress.start(10) # semakin kecil angkanya, semakin cepat gerakan
# Setelah beberapa detik → stop & fade-out
splash.after(4000, lambda: fade_out()) # tampil 4 detik
# === Fade-out animasi ===
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
progress.stop()
open_main_menu(splash)
splash.mainloop()
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
✨ Perbedaan dengan versi lama:
- Bilah kemajuan bergaris dengan mode tak tentu → bergerak mengkonversi tanpa angka.
- Warna bar dibuat gradien hijau (
#4CAF50 → #81C784 → #388E3C). - Durasi splash yang ditentukan
splash.after(4000, ...)(4 detik → bisa diubah misalnya 6000 = 6 detik). - Tetap ada fade-in dan fade-out biar transisinya lancar.
🔥 Jadi sekarang splash kamu punya logo → fade-in → progres bar bergelombang → fade-out → menu utama .
8. progress bar rainbow (warna berganti otomatis)
Berikut versi progress bar rainbow (warna berganti otomatis) biar makin atraktif? 🌈
Sekarang kita bikin versi progres bar pelangi (warna berganti otomatis sambil animasi tak tentu / bergelombang).
Caranya kita bikin loop timer ( after) untuk mengganti warna progresbar setiap beberapa milidetik → kesannya kayak pelangi hidup.
📌 splash_screen.py(Bilah Kemajuan Pelangi 🌈)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pip install pillow
from menu_utama import tampilkan_halaman_utama
# Path logo (ubah sesuai logo PNG/JPG kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Transparansi awal (fade-in start)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
progress_label = tk.Label(
splash, text="Loading...",
font=("Arial", 11), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar rainbow ===
style = ttk.Style()
style.theme_use("clam")
style.configure("Rainbow.Horizontal.TProgressbar",
troughcolor="white",
bordercolor="white",
background="red")
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="indeterminate",
style="Rainbow.Horizontal.TProgressbar"
)
progress.pack(pady=20)
# Daftar warna rainbow
rainbow_colors = ["#FF0000", "#FF7F00", "#FFFF00",
"#00FF00", "#0000FF", "#4B0082", "#8B00FF"]
color_index = {"i": 0} # pakai dict biar mutable dalam closure
def cycle_colors():
color = rainbow_colors[color_index["i"] % len(rainbow_colors)]
style.configure("Rainbow.Horizontal.TProgressbar", background=color, lightcolor=color, darkcolor=color)
color_index["i"] += 1
splash.after(300, cycle_colors) # ganti tiap 300ms
cycle_colors()
# === Fade-in animasi ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
# Jalankan progress bar indeterminate (animasi bergelombang)
progress.start(10)
# Setelah beberapa detik → stop & fade-out
splash.after(5000, lambda: fade_out()) # tampil 5 detik
# === Fade-out animasi ===
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
progress.stop()
open_main_menu(splash)
splash.mainloop()
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
✨ Hasil:
- Fade-in → Tampilan logo → Progress bar jalan bergelombang.
- Progress bar warnanya berubah-ubah seperti pelangi 🌈 tiap 0.3 detik.
- Setelah 5 detik → fade-out smooth → masuk ke Menu Utama.
9. Splash screen efek teks “Loading...”
Berikut efek teks “Loading...” juga ikut ganti warna rainbow biar makin heboh. Kita tambah efek supaya teks “Loading...” juga ikut ganti warna rainbow sinkron dengan progres bar. Jadi lebih hidup & heboh.
📌 splash_screen.py(Kemajuan Pelangi + Teks Pelangi)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pip install pillow
from menu_utama import tampilkan_halaman_utama
# Path logo (ubah sesuai logo PNG/JPG kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Transparansi awal (fade-in start)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
# === Label Loading (akan ikut rainbow) ===
progress_label = tk.Label(
splash, text="Loading...",
font=("Arial", 12, "bold"), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar rainbow ===
style = ttk.Style()
style.theme_use("clam")
style.configure("Rainbow.Horizontal.TProgressbar",
troughcolor="white",
bordercolor="white",
background="red")
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="indeterminate",
style="Rainbow.Horizontal.TProgressbar"
)
progress.pack(pady=20)
# Daftar warna rainbow
rainbow_colors = ["#FF0000", "#FF7F00", "#FFFF00",
"#00FF00", "#0000FF", "#4B0082", "#8B00FF"]
color_index = {"i": 0} # pakai dict biar mutable dalam closure
def cycle_colors():
color = rainbow_colors[color_index["i"] % len(rainbow_colors)]
# Update progress bar warna
style.configure("Rainbow.Horizontal.TProgressbar",
background=color, lightcolor=color, darkcolor=color)
# Update teks "Loading..." warna
progress_label.config(fg=color)
color_index["i"] += 1
splash.after(300, cycle_colors) # ganti tiap 300ms
cycle_colors()
# === Fade-in animasi ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
# Jalankan progress bar indeterminate (animasi bergelombang)
progress.start(10)
# Setelah beberapa detik → stop & fade-out
splash.after(5000, lambda: fade_out()) # tampil 5 detik
# === Fade-out animasi ===
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
progress.stop()
open_main_menu(splash)
splash.mainloop()
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
✨ Hasil sekarang:
- Progress bar tak tentu tetap bergelombang 🌊.
- Warna progres bar berubah-ubah pelangi 🌈 tiap 0.3 detik.
- Teks “Loading...” ikut berubah warna sinkron → semakin hidup 🔥.
- Efek fade-in + fade-out tetap ada → transisi lancar.
10. Splash screen animasi teks “Loading.” → “Loading..” → “Loading…” (dot berjalan)
Berikut animasi teks “Loading.” → “Loading..” → “Loading…” (dot berjalan) biar lebih realistis kayak aplikasi modern?
kita bikin teks “Loading.” → “Loading..” → “Loading…” berjalan loop, sinkron dengan warna pelangi. Jadi kemajuan splash screen akan semakin modern.
📌 splash_screen.py(Kemajuan Pelangi + Teks Pelangi + Animasi Titik)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pip install pillow
from menu_utama import tampilkan_halaman_utama
# Path logo (ubah sesuai lokasi logo kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Transparansi awal (fade-in start)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
# === Label Loading (rainbow + animasi dot) ===
progress_label = tk.Label(
splash, text="Loading.",
font=("Arial", 12, "bold"), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar rainbow ===
style = ttk.Style()
style.theme_use("clam")
style.configure("Rainbow.Horizontal.TProgressbar",
troughcolor="white",
bordercolor="white",
background="red")
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="indeterminate",
style="Rainbow.Horizontal.TProgressbar"
)
progress.pack(pady=20)
# === Rainbow warna loop ===
rainbow_colors = ["#FF0000", "#FF7F00", "#FFFF00",
"#00FF00", "#0000FF", "#4B0082", "#8B00FF"]
color_index = {"i": 0}
# Animasi dot "Loading."
dots = [".", "..", "..."]
dot_index = {"i": 0}
def cycle_colors_and_text():
# Ganti warna
color = rainbow_colors[color_index["i"] % len(rainbow_colors)]
style.configure("Rainbow.Horizontal.TProgressbar",
background=color, lightcolor=color, darkcolor=color)
# Ganti teks + warna
progress_label.config(
text="Loading" + dots[dot_index["i"] % len(dots)],
fg=color
)
# Increment index
color_index["i"] += 1
dot_index["i"] += 1
splash.after(400, cycle_colors_and_text) # update tiap 400ms
cycle_colors_and_text()
# === Fade-in animasi ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
# Jalankan progress bar indeterminate (animasi bergelombang)
progress.start(10)
# Setelah beberapa detik → stop & fade-out
splash.after(6000, lambda: fade_out()) # tampil 6 detik
# === Fade-out animasi ===
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
progress.stop()
open_main_menu(splash)
splash.mainloop()
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
✨ Hasil sekarang:
- Bilah kemajuan pelangi bergelombang 🌈
- Teks “Memuat.” → “Memuat..” → “Memuat…” berganti otomatis ⏳
- Warna teks ikut berubah sesuai warna pelangi 🔥
- Ada fade-in + fade-out transisi halus ke menu utama 🚀
Apakah kamu mau saya menambahkan juga efek suara (bip atau file suara .wav/.mp3) saat splash selesai → biar makin dramatis? 🎵
mau kamu menambahkan juga efek suara (file suara .wav/.mp3)
Wah keren! 🎶 Kita bisa menambahkan efek suara saat splash selesai (ketika fade-out → sebelum masuk menu utama).
Di Python (Tkinter), opsi sederhana:
- Windows/Linux → pakai
playsound(pip install playsound) - Android (Pydroid3) → biasanya lebih aman pakai
pygame(pip install pygame) karenaplaysoundsuka error di Android.
Saya membuat contoh dengan pygame.mixer (lebih fleksibel, bisa MP3/WAV)
📌 splash_screen.py(Kemajuan Pelangi + Teks Pelangi + Animasi Titik + Efek Suara)
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk # pip install pillow
import pygame # pip install pygame
from menu_utama import tampilkan_halaman_utama
# Path logo (ubah sesuai lokasi logo kamu)
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
# Path sound effect (mp3 atau wav)
SOUND_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/splash_sound.mp3"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
# Transparansi awal (fade-in start)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
# === Judul ===
tk.Label(
splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white"
).pack(pady=5)
tk.Label(
splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white"
).pack(pady=5)
# === Label Loading (rainbow + animasi dot) ===
progress_label = tk.Label(
splash, text="Loading.",
font=("Arial", 12, "bold"), fg="black", bg="white"
)
progress_label.pack(pady=10)
# === Progress bar rainbow ===
style = ttk.Style()
style.theme_use("clam")
style.configure("Rainbow.Horizontal.TProgressbar",
troughcolor="white",
bordercolor="white",
background="red")
progress = ttk.Progressbar(
splash, orient="horizontal",
length=300, mode="indeterminate",
style="Rainbow.Horizontal.TProgressbar"
)
progress.pack(pady=20)
# === Rainbow warna loop ===
rainbow_colors = ["#FF0000", "#FF7F00", "#FFFF00",
"#00FF00", "#0000FF", "#4B0082", "#8B00FF"]
color_index = {"i": 0}
# Animasi dot "Loading."
dots = [".", "..", "..."]
dot_index = {"i": 0}
def cycle_colors_and_text():
# Ganti warna
color = rainbow_colors[color_index["i"] % len(rainbow_colors)]
style.configure("Rainbow.Horizontal.TProgressbar",
background=color, lightcolor=color, darkcolor=color)
# Ganti teks + warna
progress_label.config(
text="Loading" + dots[dot_index["i"] % len(dots)],
fg=color
)
# Increment index
color_index["i"] += 1
dot_index["i"] += 1
splash.after(400, cycle_colors_and_text) # update tiap 400ms
cycle_colors_and_text()
# === Fade-in animasi ===
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
# Jalankan progress bar indeterminate (animasi bergelombang)
progress.start(10)
# Setelah beberapa detik → stop & fade-out
splash.after(6000, lambda: fade_out()) # tampil 6 detik
# === Fade-out animasi + efek suara ===
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
progress.stop()
play_sound_effect() # 🔊 mainkan suara
open_main_menu(splash)
splash.mainloop()
def play_sound_effect():
"""Mainkan efek suara saat splash selesai"""
try:
pygame.mixer.init()
pygame.mixer.music.load(SOUND_PATH)
pygame.mixer.music.play()
except Exception as e:
print(f"[Sound error] {e}")
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
✨ Hasil tambahan:
- Begitu splash selesai → efek suara otomatis dimainkan 🎶
- Kamu bisa menggunakan .mp3 (misalnya suara “ding” / “welcome”) atau .wav (lebih ringan).
- Efek ini berjalan bersamaan dengan transisi fade-out → jadi lebih dramatis 🔥
Mau saya bikin juga opsi toggle di settings (misalnya pengguna bisa pilih: Sound ON / OFF) supaya bisa dimatikan kalau tidak mau ada suara? 🎛️
Mau kamu bikin juga opsi toggle di settings (misalnya pengguna bisa pilih: Sound ON / OFF) supaya bisa dimatikan kalau tidak mau ada suara. 🎛️
Oke mantap 👍 kita tambahkan opsi Settings → Sound ON/OFF supaya pengguna bisa atur sendiri apakah efek suara splash dipakai atau tidak 🎛️.
Cara mudahnya: kita menyimpan flag pengaturan di file settings.json(atau SQLite, tapi JSON lebih ringan).
📌 settings_manager.py
import os, json
SETTINGS_FILE = "/storage/emulated/0/AppJadi/SmartNutriChefAI/settings.json"
DEFAULT_SETTINGS = {
"sound_enabled": True
}
def load_settings():
if not os.path.exists(SETTINGS_FILE):
save_settings(DEFAULT_SETTINGS)
return DEFAULT_SETTINGS
with open(SETTINGS_FILE, "r") as f:
return json.load(f)
def save_settings(settings):
with open(SETTINGS_FILE, "w") as f:
json.dump(settings, f, indent=4)
📌 Modifikasisplash_screen.py
Integrasikan setting sound:
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
import pygame
from menu_utama import tampilkan_halaman_utama
from settings_manager import load_settings # 🔧
LOGO_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/logo.png"
SOUND_PATH = "/storage/emulated/0/AppJadi/SmartNutriChefAI/assets/splash_sound.mp3"
def show_splash_screen():
splash = tk.Tk()
splash.title("SmartNutriChefAI - Splash")
splash.geometry("520x400")
splash.configure(bg="white")
splash.resizable(False, False)
splash.attributes("-alpha", 0.0)
# === Logo ===
try:
img = Image.open(LOGO_PATH)
img = img.resize((150, 150), Image.LANCZOS)
logo_img = ImageTk.PhotoImage(img)
logo_label = tk.Label(splash, image=logo_img, bg="white")
logo_label.image = logo_img
logo_label.pack(pady=25)
except Exception as e:
tk.Label(splash, text=f"[Logo not found]\n{e}",
font=("Arial", 10), fg="red", bg="white").pack(pady=25)
tk.Label(splash, text="SmartNutriChefAI",
font=("Arial", 22, "bold"), fg="#4CAF50", bg="white").pack(pady=5)
tk.Label(splash, text="by SR Pakpahan",
font=("Arial", 12), fg="gray", bg="white").pack(pady=5)
# === Label Loading rainbow ===
progress_label = tk.Label(splash, text="Loading.",
font=("Arial", 12, "bold"), fg="black", bg="white")
progress_label.pack(pady=10)
# === Progressbar ===
style = ttk.Style()
style.theme_use("clam")
style.configure("Rainbow.Horizontal.TProgressbar",
troughcolor="white",
bordercolor="white",
background="red")
progress = ttk.Progressbar(splash, orient="horizontal",
length=300, mode="indeterminate",
style="Rainbow.Horizontal.TProgressbar")
progress.pack(pady=20)
rainbow_colors = ["#FF0000", "#FF7F00", "#FFFF00",
"#00FF00", "#0000FF", "#4B0082", "#8B00FF"]
color_index = {"i": 0}
dots = [".", "..", "..."]
dot_index = {"i": 0}
def cycle_colors_and_text():
color = rainbow_colors[color_index["i"] % len(rainbow_colors)]
style.configure("Rainbow.Horizontal.TProgressbar",
background=color, lightcolor=color, darkcolor=color)
progress_label.config(text="Loading" + dots[dot_index["i"] % len(dots)], fg=color)
color_index["i"] += 1
dot_index["i"] += 1
splash.after(400, cycle_colors_and_text)
cycle_colors_and_text()
def fade_in(opacity=0.0):
if opacity <= 1.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_in(opacity + 0.05))
fade_in()
progress.start(10)
splash.after(6000, lambda: fade_out())
def fade_out(opacity=1.0):
if opacity > 0.0:
splash.attributes("-alpha", opacity)
splash.after(40, lambda: fade_out(opacity - 0.05))
else:
progress.stop()
settings = load_settings()
if settings.get("sound_enabled", True):
play_sound_effect() # 🔊 hanya kalau ON
open_main_menu(splash)
splash.mainloop()
def play_sound_effect():
try:
pygame.mixer.init()
pygame.mixer.music.load(SOUND_PATH)
pygame.mixer.music.play()
except Exception as e:
print(f"[Sound error] {e}")
def open_main_menu(splash_root):
splash_root.destroy()
root = tk.Tk()
root.title("SmartNutriChefAI")
root.geometry("600x500")
tampilkan_halaman_utama(root)
root.mainloop()
if __name__ == "__main__":
show_splash_screen()
📌 Tambah Pengaturan Menu (opsional di menu_utama.py)
from settings_manager import load_settings, save_settings
def open_settings(root_frame):
for widget in root_frame.winfo_children():
widget.destroy()
tk.Label(root_frame, text="Pengaturan", font=("Arial", 16, "bold")).pack(pady=20)
settings = load_settings()
sound_var = tk.BooleanVar(value=settings.get("sound_enabled", True))
tk.Checkbutton(root_frame, text="Aktifkan Suara Splash",
variable=sound_var, font=("Arial", 12)).pack(pady=10)
def simpan():
settings["sound_enabled"] = sound_var.get()
save_settings(settings)
messagebox.showinfo("Info", "Pengaturan tersimpan!")
tk.Button(root_frame, text="Simpan", command=simpan,
bg="green", fg="white").pack(pady=10)
tk.Button(root_frame, text="⬅ Kembali", bg="gray", fg="white",
command=lambda: tampilkan_halaman_utama(root_frame)).pack(pady=20)
⚡ Jadi:
- Default → suara aktif
- Bisa dimatikan di pengaturan menu
- Splash screen periksa pengaturan dulu sebelum memainkan musik
Mau saya sekalian bikin tombol UI Settings langsung menu_utama.pybiar bisa kamu akses cepat dari menu utama?
Comments
Post a Comment