You are on page 1of 4

#Import Module Gui Tkinter มา

import tkinter as tk
#จาก Module (Random) ให้ Import การเลือก(Choice)
from random import choice
#Import Module ในการเปิด Link ต่างๆ
import webbrowser
#tkinter import function กล่องข้อความ
from tkinter import messagebox

#Songs
#เก็บข้อมูลเพลง (list)
SONGS = {
"T-POP": [
("BLOW MY MIND'", "MINDY", "https://youtu.be/_ywkkKd71qw?
si=ci3UInsP1ahpdYlb"),
("TOUCHDOWN(ใกล้ดาว)", "PERSES", "https://youtu.be/IiOBo6ssGPA?
si=FOIKeJbyetWhC-qv"),
("NOT BAD", "PiXXiE", "https://youtu.be/uDfjZWUJ2P0?si=EELh9M-JloKDSZUH"),
("เพื่อนกันไม่เลิกกัน(Close Friend)", "Bamm", "https://youtu.be/duCd9C54DzM?
si=2PKs6FuMeK-MVG7t"),
("How To Love", "ALLY(feat.GRAY)", "https://youtu.be/CSdTTMF5b74?
si=NNDLBlCX-TzTRWa5"),
("ติดฝน", "PiXXiE", "https://youtu.be/AfNWXNkpO7A?si=QTJDMxv_FY40g"),
("วันปะหล่ะ? (TEST ME)", "4EVE", "https://youtu.be/zj4dW3_2mgo?si=-
jtbtKigcAoHSopY"),
("คนไม่คุย (Silent Mode)", "PROXIE", "https://youtu.be/eXqDjhI9W6U?
si=1BpGszm01ToT5Dxs"),
("247", "LUSS", "https://youtu.be/Vm9rFxdiA-o?si=H3LXDtYbbHkggZ90"),
("คนเราจะแอบรักใครสักคนได้นานแค่ไหน", "(feat.AUTTA)",
"https://youtu.be/gDTDFz0PL78?si=inY_7odlyFgz7xV7"),
],
"K-POP": [
("Missing You", "BTOB", "https://youtu.be/wDkjWSt3HOM?
si=WohUmrONVRLRILlr"),
("God’s Menu", "Stray kids", "https://youtu.be/TQTlCHxyuu8?
si=VnSWN715AAWWgvd6"),
("Kidult", "Seventeen", "https://youtu.be/s4jHQXd-7gg?
si=s8ppK8yWRBpPW3WB"),
("Good Parts", "Le sserafim", "https://youtu.be/c_5PAWfIlGs?si=hyj8vA8AaeN-
znhf"),
("Nobody Knows", "Kiss Of Life", "https://youtu.be/unLuba-TQiE?
si=NZONR_9q1mcPaaPm"),
("Super Shy", "NewJeans", "https://youtu.be/ArmDp-zijuc?si=fsYPLIfcgl16s-
FK"),
("TAEYANG", "‘Shoong! (feat. LISA of BLACKPINK)’",
"https://youtu.be/NFnAuiklEug?si=yybeLv2aTeKzVfOp"),
("Shut Down", "BLACKPINK", "https://youtu.be/PjrAwC4TIPA?
si=ci47j2Aqg5CvIZFA"),
("Ma Boy", "SISTAR19", "https://youtu.be/X6XXia5B2Wg?si=6Tgyc3HBhcDRQLw1"),
("ZOOM", "Jessi", "https://youtu.be/6j928wBZ_Bo?si=OIK9KcyEuVaIG1j0"),
],
"J-POP": [
("Do not touch", "MISAMO", "https://youtu.be/woKq2sD8xho?
si=bs532Mi9h2kdAD7q"),
("Social path", "Stray kids(feat.LISA)", "https://youtu.be/M0c04xfBtyc?
si=GWkBMZyWHlArXVpC"),
("NIGHT DANCER", "imase", "https://youtu.be/kagoEGKHZvU?
si=pj8queu3CGCUQljg"),
("YELLOW", "Yoh Kamiyama", "https://youtu.be/1_lap6dzSUc?
si=sEYaLc7K1tKZ3vHN"),
("Overdose", "Natori", "https://youtu.be/H08YWE4CIFQ?si=k8onlk86_mm4hmyi"),
("Matsuri", "Fuji kaze", "https://youtu.be/NwOvu-j_WjY?
si=NW1SmSRFYuE2ttmY"),
("Comedy", "Gen hoshino", "https://youtu.be/D_Oyplmhhv0?
si=UY8Z4GUDf7K7Xqnp"),
("Koi", "Gen hoshino", "https://youtu.be/jhOVibLEDhA?si=netWy2cTXe_v-Xki"),
("Odoriko", "Vaundy", "https://youtu.be/7HgJIAUtICU?si=YNqY0i1nGKN5XtvD"),
("Tipsy", "Wanuka", "https://youtu.be/Rq0NjgXSj0s?si=6857WwwZB5jDCcX4"),
],
}

#สร้างคลาส UI
class App:
#Self คือเก็บข้อมูลเข้า Class Master ตัวแปร(Attibile)
def __init__(self, master):
self.master = master
#หัวเรื่อง
master.title("สุ่มเพลง")

#เส้นกรอบข้อความสุ่มเพลง
self.LabelBox = tk.LabelFrame(master)
self.LabelBox.pack()

#LabelText (สุ่มเพลง POP!)


self.Label = tk.Label(self.LabelBox, text='สุ่มเพลง POP!', font=("Helvetica",
"16"))
self.Label.pack()

#สร้างกรอบเพื่อให้ปุ่มเรียงกัน
self.Frame = tk.Frame(master)
self.Frame.pack()

ม T-POP
#ปุ่้
self.button = tk.Button(self.Frame, text="T-POP", font=("Helvetica", "16"),
bg="White")
self.button.pack(side=tk.LEFT)
#เมื่อกดปุ่มให้เลือกใช้ฟังชัน on_event_button (ทำให้ปุ่มเขียว และ เลือก แนวเพลง)
self.button.bind("<Button-1>", self.on_event_button)

#ปุ่ม K-POP
self.button2 = tk.Button(self.Frame, text="K-POP", font=("Helvetica",
"16"), bg="White")
self.button2.pack(side=tk.LEFT)
#เมื่อกดปุ่มให้เลือกใช้ฟังชัน on_event_button2 (ทำให้ปุ่มเขียว และ เลือก แนวเพลง)
self.button2.bind("<Button-1>", self.on_event_button2)

#ปุ่ม J-POP
self.button3 = tk.Button(self.Frame, text="J-POP", font=("Helvetica",
"16"), bg="White")
self.button3.pack(side=tk.LEFT)
#เมื่อกดปุ่มให้เลือกใช้ฟังชัน on_event_button3 (ทำให้ปุ่มเขียว และ เลือก แนวเพลง)
self.button3.bind("<Button-1>", self.on_event_button3)

#ปุ่มสุ่มเพลง เมือกดให้ทำการเรือกใช้ Function show_songs


self.button4 = tk.Button(master, text="สุ่มเพลง", font=("Helvetica", "16") ,
command=self.show_songs)
self.button4.pack()
#สร้างกรอบที่2 เพื่อให้ปุ่มเรียงกัน
self.Frame2 = tk.LabelFrame(self.master)
self.Frame2.pack()

#กำหนดตัวแปรข้อความชื่อเพลง และ นักร้อง


self.Label2 = tk.Label(self.Frame2, font=("Helvetica", "16"))
self.Label2.pack()

#ปุ่มเข้าลิ้งเพลง
self.button5 = tk.Button(self.Frame2, font=("Helvetica", "16"))
self.button5.pack()

#ตัวแปร การเลือกประเภทเพลง
self.buttonAt = False
self.buttonAt2 = False
self.buttonAt3 = False
#Function (on_event_button) ทำให้ปุ่ม T-POP เขียว และ เลือกประเภท T-POP
def on_event_button(self, event):
if self.button2.cget('bg') != 'White' or self.button3.cget('bg') !=
'White':
self.button2.config(bg="White")
self.buttonAt2 = False
self.button3.config(bg="White")
self.buttonAt3 = False
elif self.button.cget('bg') == 'White':
self.button.config(bg="Green")
self.buttonAt = True
else:
self.button.config(bg="White")
self.buttonAt = False

#Function (on_event_button) ทำให้ปุ่ม K-POP เขียว และ เลือกประเภท K-POP


def on_event_button2(self, event):
if self.button.cget('bg') != 'White' or self.button3.cget('bg') != 'White':
self.button.config(bg="White")
self.buttonAt = False
self.button3.config(bg="White")
self.buttonAt3 = False
elif self.button2.cget('bg') == 'White':
self.button2.config(bg="Green")
self.buttonAt2 = True
else:
self.button2.config(bg="White")
self.buttonAt2 = False

#Function (on_event_button) ทำให้ปุ่ม J-POP เขียว และ เลือกประเภท J-POP


def on_event_button3(self, event):
if self.button.cget('bg') != 'White' or self.button2.cget('bg') != 'White':
self.button.config(bg="White")
self.buttonAt = False
self.button2.config(bg="White")
self.buttonAt2 = False
elif self.button3.cget('bg') == 'White':
self.button3.config(bg="Green")
self.buttonAt3 = True
else:
self.button3.config(bg="White")
self.buttonAt3 = False
#Function (show_songs) ทำให้ตัวแปรที่เคยกำหนด แสดงเพลง
def show_songs(self):
if self.buttonAt == True:
self.song, self.artist, self.link =
choice(SONGS[self.button.cget('text')])
self.Label2.config(text=f"{self.song} : {self.artist}")
self.button5.config(text=f"{self.link}",fg="Blue",
command=self.open_youtube)
elif self.buttonAt2 == True:
self.song, self.artist, self.link =
choice(SONGS[self.button2.cget('text')])
self.Label2.config(text=f"{self.song} : {self.artist}")
self.button5.config(text=f"{self.link}",fg="Blue",
command=self.open_youtube)
elif self.buttonAt3 == True:
self.song, self.artist, self.link =
choice(SONGS[self.button3.cget('text')])
self.Label2.config(text=f"{self.song} : {self.artist}")
self.button5.config(text=f"{self.link}",fg="Blue",
command=self.open_youtube)
else:
#ถ้าไม่ได้เรียกให้แจ้งเตือนด้วย messagebox บรรทัดที่8
messagebox.showerror("แจ้งเตือน!", "Select Type!")

#Function (open_youtube) เปิดลิ้ง Youtube


def open_youtube(self):
webbrowser.open(self.button5.cget('text'))

#เรียกใช้Class ทำ Ui
def main():
root = tk.Tk()
App(root)
root.mainloop()
#เรียกใช้Function เพื่อรันโค้ด
if __name__ == '__main__':
main()

You might also like