1. เปิด VS Code
    Screenshot

2. ทำการเปิด folder python แล้วกด new file

3. ตั้งชื่อไฟล์ว่า Rand.py แล้วกด enter เพื่อสร้างไฟล์

4. ทำการพิมพ์โค้ดสุ่มรายการอาหารลงไป (ตามโค้ดด้านล่าง)

 

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
#ประกาศตัวแปร lunch มาเก็บรายการอาหาร
lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
#แสดงผลรายการอาหารโดยการสุ่ม
print(random.choice(lunch))

5. สร้างหน้าจอแสดงผลแบบ GUI (Graphic User Interface)

 

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
#ประกาศตัวแปร lunch มาเก็บรายการอาหาร
lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
#แสดงผลรายการอาหารโดยการสุ่ม
print(random.choice(lunch)) 

#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop()

พอรันจะได้ GIU Form ตามภาพ

6. สร้าง object ปุ่มกด (button), label สำหรับแสดงข้อความบนหน้าจอ

 

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
#ประกาศตัวแปร lunch มาเก็บรายการอาหาร
lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
#แสดงผลรายการอาหารโดยการสุ่ม
print(random.choice(lunch)) 

#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)

#สร้างปุ่มกด button
tk.Button(app,text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


ตัวอย่าง row column

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
#ประกาศตัวแปร lunch มาเก็บรายการอาหาร
lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
#แสดงผลรายการอาหารโดยการสุ่ม
print(random.choice(lunch)) 

#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 1
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)
#label 2
tk.Label(app,text="แสดงผลลัพธ์ 2",font=("Tahoma",16),foreground="red").grid(row=0,column=1)
#label 3
tk.Label(app,text="แสดงผลลัพธ์ 3",font=("Tahoma",16),foreground="red").grid(row=0,column=2)
#label 4
tk.Label(app,text="แสดงผลลัพธ์ 4",font=("Tahoma",16),foreground="red").grid(row=1,column=1)


#สร้างปุ่มกด button
tk.Button(app,text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


7. การแสดงรูปภาพบน form TKInter จะต้องใช้ PILLOW ซึ่งต้อง Install PIL Lib ก่อน เพราะไม่ใช่ฟังชั่นมาตรฐานของ python

ทำการพิมพ์ pip install Pillow

หลังจากนั้นไปหารูปภาพอาหารมาวางที่เดียวกับไฟล์งานของเราดังภาพ

code

 

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#import lib แสดง image บน form ต้องใช้ Pillow
from PIL import Image,ImageTk #เรียกใช้งาน  
#ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
#ประกาศตัวแปร lunch มาเก็บรายการอาหาร
lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
#แสดงผลรายการอาหารโดยการสุ่ม
print(random.choice(lunch)) 

#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 1
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)
#label 2
tk.Label(app,text="แสดงผลลัพธ์ 2",font=("Tahoma",16),foreground="red").grid(row=0,column=1)
#label 3
tk.Label(app,text="แสดงผลลัพธ์ 3",font=("Tahoma",16),foreground="red").grid(row=0,column=2)
#label 4
#tk.Label(app,text="แสดงผลลัพธ์ 4",font=("Tahoma",16),foreground="red").grid(row=1,column=1)
#เอา Image มาแสดงบนฟอร์ม ประกาศตัวแปรมาแสดงภาพ
myimg=Image.open("krapow.png")
# ย่อรูป (ปรับตามขนาดที่ต้องการ)
myimg = myimg.resize((100, 100))

photo=ImageTk.PhotoImage(myimg)
#ให้แสดงผล Label ที่แสดงผลเป็น Image
tk.Label(app,image=photo).grid(row=1,column=1) 

#สร้างปุ่มกด button
tk.Button(app,text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


 

รูปภาพให้save ไว้ในฟอรเดอร์ python

8. สร้างฟังชั่นและแก้ไขปุ่มกด ให้กดแล้วทำตามคำสั่งดังภาพ

code step 1 กดแล้วขึ้นว่า กดแล้ว

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#import lib แสดง image บน form ต้องใช้ Pillow
from PIL import Image,ImageTk #เรียกใช้งาน  
#ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
#ประกาศตัวแปร lunch มาเก็บรายการอาหาร
lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
#แสดงผลรายการอาหารโดยการสุ่ม
print(random.choice(lunch)) 

#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 1
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)
#label 3
tk.Label(app,text="แสดงผลลัพธ์ 3",font=("Tahoma",16),foreground="red").grid(row=0,column=2)
#label 4
#tk.Label(app,text="แสดงผลลัพธ์ 4",font=("Tahoma",16),foreground="red").grid(row=1,column=1)
#เอา Image มาแสดงบนฟอร์ม ประกาศตัวแปรมาแสดงภาพ
myimg=Image.open("krapow.png")
# ย่อรูป (ปรับตามขนาดที่ต้องการ)
myimg = myimg.resize((200, 200)) #ย่อรูปด้วยคำสั่ง resize ขนาดกว้าง 200 สูง 200

photo=ImageTk.PhotoImage(myimg)
#ให้แสดงผล Label ที่แสดงผลเป็น Image
tk.Label(app,image=photo).grid(row=1,column=1) 

#สร้างฟังชั่น clicked เพื่อรับคำสั่งเมื่อกดปุ่ม
def clicked():
    #ให้เขียนคำสั่งในนี้
    #label 2
    tk.Label(app,text="กดแล้ว",
             font=("Tahoma",16),
             foreground="red").grid(row=0,column=1)

#สร้างปุ่มกด button
tk.Button(app,command=lambda:clicked(),text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


code step 2 สั่ง random อาหาร

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#import lib แสดง image บน form ต้องใช้ Pillow
from PIL import Image,ImageTk #เรียกใช้งาน  


#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 1
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)
#label 3
tk.Label(app,text="แสดงผลลัพธ์ 3",font=("Tahoma",16),foreground="red").grid(row=0,column=2)
#label 4
#tk.Label(app,text="แสดงผลลัพธ์ 4",font=("Tahoma",16),foreground="red").grid(row=1,column=1)
#เอา Image มาแสดงบนฟอร์ม ประกาศตัวแปรมาแสดงภาพ
myimg=Image.open("krapow.png")
# ย่อรูป (ปรับตามขนาดที่ต้องการ)
myimg = myimg.resize((200, 200)) #ย่อรูปด้วยคำสั่ง resize ขนาดกว้าง 200 สูง 200

photo=ImageTk.PhotoImage(myimg)
#ให้แสดงผล Label ที่แสดงผลเป็น Image
tk.Label(app,image=photo).grid(row=1,column=1) 

#สร้างฟังชั่น clicked เพื่อรับคำสั่งเมื่อกดปุ่ม
def clicked():
    #ให้เขียนคำสั่งในนี้
    #ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
     #ประกาศตัวแปร lunch มาเก็บรายการอาหาร
    lunch=["ข้าวพัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
    print(random.choice(lunch)) 
    #label 2 ตรง text= เอาฟังชั่น random ด้านบนมาใส่
    tk.Label(app,text=random.choice(lunch),
             font=("Tahoma",16),
             foreground="red").grid(row=0,column=1)
    
#สร้างปุ่มกด button
tk.Button(app,command=lambda:clicked(),text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


แก้ปัญหา label สร้างซ้อนแล้วทับกัน เพราะว่าไม่ได้กำหนดให้ label สร้างมาไว้ก่อน ควรจะเอาตัวแปรมารับ

 

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#import lib แสดง image บน form ต้องใช้ Pillow
from PIL import Image,ImageTk #เรียกใช้งาน  


#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 1
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)
#label 3
tk.Label(app,text="แสดงผลลัพธ์ 3",font=("Tahoma",16),foreground="red").grid(row=0,column=2)
#label 4
#tk.Label(app,text="แสดงผลลัพธ์ 4",font=("Tahoma",16),foreground="red").grid(row=1,column=1)
#เอา Image มาแสดงบนฟอร์ม ประกาศตัวแปรมาแสดงภาพ
myimg=Image.open("krapow.png")
# ย่อรูป (ปรับตามขนาดที่ต้องการ)
myimg = myimg.resize((200, 200)) #ย่อรูปด้วยคำสั่ง resize ขนาดกว้าง 200 สูง 200

photo=ImageTk.PhotoImage(myimg)
#ให้แสดงผล Label ที่แสดงผลเป็น Image
tk.Label(app,image=photo).grid(row=1,column=1) 

#สร้างตัวแปร label มาเก็บ label2
label2=tk.Label(app,text="",
             font=("Tahoma",16),
             foreground="red")
#สร้างฟังชั่น clicked เพื่อรับคำสั่งเมื่อกดปุ่ม
def clicked():
    #ให้เขียนคำสั่งในนี้
    #ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
     #ประกาศตัวแปร lunch มาเก็บรายการอาหาร
    lunch=["ข้าวผัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
    randomed=random.choice(lunch)
    print(randomed) 
    #label 2 ตรง text= เอาฟังชั่น random ด้านบนมาใส่
    label2.config(text=randomed)
    label2.grid(row=0,column=1)
    
#สร้างปุ่มกด button
tk.Button(app,command=lambda:clicked(),text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


จะต้องแก้ไขการโหลดรายการอาหาร เข้ามาเมื่อกดปุ่มต้องแสดงรายการแรนดอมอาหารได้

code

#ทำการโหลดรูปรายการอาหารทั้งหมด
radnha=Image.open("radnha.png")
#ย่อขนาดรูปให้ 200px
radnha=radnha.resize((200,200))
#Load รูปไปเก็บไว้ใน memory ภายใต้ตัวแปร food_radnha
food_radnha=ImageTk.PhotoImage(radnha)

kowpud=Image.open("kowpud.png")
#ย่อขนาดรูปให้ 200px
kowpud=kowpud.resize((200,200))
#Load รูปไปเก็บไว้ใน memory ภายใต้ตัวแปร food_kowpud
food_kowpud=ImageTk.PhotoImage(kowpud)

krapow=Image.open("krapow.png")
#ย่อขนาดรูปให้ 200px
krapow=krapow.resize((200,200))
#Load รูปไปเก็บไว้ใน memory ภายใต้ตัวแปร food_krapow
food_krapow=ImageTk.PhotoImage(krapow)

หลังจากเตรียมตัวแปรสำหรับโหลดรูปรายการอาหารเรียบร้อยแล้ว หลังจากนั้นจะต้องกลับไปที่ funtion กดปุ่ม เพื่อเอารูปที่เตรียมไว้มาใช้
code ทั้งหมดดังนี้

#เรียก lib (library) random เพื่อให้สุ่มค่าตัวแปรที่กำหนด
import random
#import lib สำหรับทำ GUI
import tkinter as tk
from tkinter import*
#import lib แสดง image บน form ต้องใช้ Pillow
from PIL import Image,ImageTk #เรียกใช้งาน  


#สร้าง GUI
app=tk.Tk() #เริ่มเรียกใช้ lib tk
app.title('กินไรดี') #ตั้งหัวฟอร์มว่า กินไรดี 
#label 1
tk.Label(app,text="แสดงผลลัพธ์",font=("Tahoma",16),foreground="red").grid(row=0,column=0)
#label 3
tk.Label(app,text="แสดงผลลัพธ์ 3",font=("Tahoma",16),foreground="red").grid(row=0,column=2)
#label 4
#tk.Label(app,text="แสดงผลลัพธ์ 4",font=("Tahoma",16),foreground="red").grid(row=1,column=1)
#เอา Image มาแสดงบนฟอร์ม ประกาศตัวแปรมาแสดงภาพ
#myimg=Image.open("krapow.png")
# ย่อรูป (ปรับตามขนาดที่ต้องการ)
#myimg = myimg.resize((200, 200)) #ย่อรูปด้วยคำสั่ง resize ขนาดกว้าง 200 สูง 200

#photo=ImageTk.PhotoImage(myimg)
#ให้แสดงผล Label ที่แสดงผลเป็น Image
#tk.Label(app,image=photo).grid(row=1,column=1) 

#ทำการโหลดรูปรายการอาหารทั้งหมด
radnha=Image.open("radnha.png")
#ย่อขนาดรูปให้ 200px
radnha=radnha.resize((200,200))
#Load รูปไปเก็บไว้ใน memory ภายใต้ตัวแปร food_radnha
food_radnha=ImageTk.PhotoImage(radnha)

kowpud=Image.open("kowpud.png")
#ย่อขนาดรูปให้ 200px
kowpud=kowpud.resize((200,200))
#Load รูปไปเก็บไว้ใน memory ภายใต้ตัวแปร food_kowpud
food_kowpud=ImageTk.PhotoImage(kowpud)

krapow=Image.open("krapow.png")
#ย่อขนาดรูปให้ 200px
krapow=krapow.resize((200,200))
#Load รูปไปเก็บไว้ใน memory ภายใต้ตัวแปร food_krapow
food_krapow=ImageTk.PhotoImage(krapow)


#สร้างตัวแปร label มาเก็บ label2
label2=tk.Label(app,text="",
             font=("Tahoma",16),
             foreground="red")
#สร้างตัวแปร label มาเก็บ label3 แสดงข้อความ
label3=tk.Label(app,text="",
             font=("Tahoma",16),
             foreground="red")
#สร้างฟังชั่น clicked เพื่อรับคำสั่งเมื่อกดปุ่ม
def clicked():
    #ให้เขียนคำสั่งในนี้
    #ใช้ตัวแปรแบบ list มาเก็บรายการอาหารกลางวัน
     #ประกาศตัวแปร lunch มาเก็บรายการอาหาร
    lunch=["ข้าวผัด","ราดหน้า","กระเพราไก่ไข่ดาว"] 
    randomed=random.choice(lunch)
    print(randomed) 
    #ใช้คำสั่ง if เพื่อตรวจว่าได้ผลลัพธ์อะไร แล้วให้แสดงรูปตามผลลัพธ์นั้น
    if randomed=="ข้าวผัด":
         label2.config(image=food_kowpud) #แสดงรูป
         label3.config(text=randomed) #แสดงข้อความใต้รูป
    if randomed=="ราดหน้า":
         label2.config(image=food_radnha) #แสดงรูป
         label3.config(text=randomed) #แสดงข้อความใต้รูป
    if randomed=="กระเพราไก่ไข่ดาว":
         label2.config(image=food_krapow) #แสดงรูป
         label3.config(text=randomed) #แสดงข้อความใต้รูป
    #label 2 ตรง text= เอาฟังชั่น random ด้านบนมาใส่
    label2.config(text=randomed)
    label2.grid(row=0,column=1)
    label3.grid(row=1,column=1)
    
#สร้างปุ่มกด button
tk.Button(app,command=lambda:clicked(),text="คำนวน",bg="green",font=("Tahoma",25)).grid(row=2,column=1)


app.geometry("500x500") #ตั้งขนาดเป็น กว้าง 500pixel  สูง500pixel (500px)
app.mainloop() #แสดง form ที่สร้าง ด้วยคำสั่ง mainloop


ถ้ายากให้ภาพหมุนๆ แล้วหยุดก็ใช้โค้ดต่อไปนี้ (ให้ chatgpt ช่วย)

import random
import tkinter as tk
from PIL import Image, ImageTk

app = tk.Tk()
app.title('กินไรดี')

# โหลดรูปทั้งหมด
radnha = Image.open("radnha.png").resize((200, 200))
kowpud = Image.open("kowpud.png").resize((200, 200))
krapow = Image.open("krapow.png").resize((200, 200))

food_radnha = ImageTk.PhotoImage(radnha)
food_kowpud = ImageTk.PhotoImage(kowpud)
food_krapow = ImageTk.PhotoImage(krapow)

foods = [
    ("ข้าวผัด", food_kowpud),
    ("ราดหน้า", food_radnha),
    ("กระเพราไก่ไข่ดาว", food_krapow)
]

# Label แสดงรูป และข้อความ
label_img = tk.Label(app)
label_img.grid(row=0, column=1)

label_text = tk.Label(app, text="", font=("Tahoma", 16), fg="red")
label_text.grid(row=1, column=1)

animation_running = False   # ป้องกันกดรัว

# -----------------------------
# ฟังก์ชัน Animation
# -----------------------------
def animate(count):
    global animation_running
    
    if count <= 0:
        animation_running = False
        show_final()
        return
    
    name, img = random.choice(foods)
    label_img.config(image=img)
    label_img.image = img
    
    app.after(80, lambda: animate(count - 1))


# -----------------------------
# แสดงผลลัพธ์สุดท้าย
# -----------------------------
def show_final():
    name, img = random.choice(foods)
    label_img.config(image=img)
    label_img.image = img
    label_text.config(text=name)


# -----------------------------
# เมื่อกดปุ่ม
# -----------------------------
def clicked():
    global animation_running
    if animation_running:
        return

    animation_running = True
    animate(15)  # จำนวนครั้งที่เปลี่ยนภาพระหว่าง animation


# ปุ่มสุ่ม
tk.Button(app, command=clicked, text="สุ่มอาหาร", bg="green", font=("Tahoma", 25)).grid(row=2, column=1)

app.geometry("500x500")
app.mainloop()

final ทำการ compile โปรแกรมเป็น exe เพื่อไว้ใช้งาน

ต้องโหลด lib

  • pip install pyinstaller
  • กรณีลงไม่ผ่านอาจจะติดสิทธิให้ใช้คำสั่ง py -m pip install pyinstaller  เป็นการสั่งลงไม่สนสิทธิ

หลังจากนั้นก็ให้พิมพ์ pyinstaller Rand.py เพื่อสร้างดังภาพ

จะได้ไฟล์ Rand.exe มาใน C:\python\dist (จะมี folder นี้) อย่าลืมให้เอาภาพเข้าไปวางไว้ด้วยไม่งั้น Rand.exe จะกดแล้ว error แล้วมันจะหายไป ไม่แสดงอะไร

ถ้าอยากเปลี่ยน icon ตอนใช้คำสั่ง pyinstaller ให้ใส่ –icon=ชื่อไฟล์ไอคอนลงไป Rand.py แต่ต้องมีไฟล์ที่ทำ ico ไว้ในที่เดียวกับไฟล์ Rand.py

คำสั่ง pyinstaller –onefile –icon=krapow_icon.ico Rand.py
ไฟล์ทั้งหมด
final_code

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.