Monday, November 26, 2012

การสร้างเมนู

ตอนที่แล้วเรามีการประมวลผลภาพและแสดงผลในหน้าต่าง ซึ่งจะเรียกใช้งานคำสั่งผ่านโค้ดโดยตรง

ขั้นตอนดังกล่าวอาจจะไม่สะดวกและยืดหยุ่นพอ ในกรณีที่มีการประมวลผลมีหลายรูปแบบ ซึ่งผู้ใช้งานน่าจะเลือกได้ด้วยตนเอง

ดังนั้น ทางเลือกนึงคือการสร้างเมนู เพื่อให้จัดการการประมวลผลรูปได้ง่ายขึ้น

ในบทความนี้จึงนำเสนอการสร้างเมนูอย่างง่าย เพื่อให้ได้ผลลัพธ์ดังนี้


นั่นคือ การสร้างเมนูหนึ่งเมนูชื่อ File และมีคำสั่งย่อยคือ Exit เมื่อคลิกที่คำสั่งนี้ก็จะปิดหน้าต่างไป

เราลองมาสร้างเมนูก่อน ด้วยคำสั่งดังต่อไปนี้
from Tkinter import Tk,Menu

class mainApp:
    #constructor
    def __init__(self,mainwindow):
        #assign class variable to input parameter
        self.mainwindow = mainwindow
        #set title
        self.mainwindow.title("Menu")

    def createMenu(self):
        #create menubar
        menubar = Menu(self.mainwindow)
        #attach menubar to main window
        self.mainwindow.config(menu=menubar)
        #FILE menu, tearoff = user can drag the menu
        fileMenu = Menu(menubar, tearoff=0)
        #add FILE menu to menubar
        menubar.add_cascade(label="File", menu=fileMenu)
        #add EXIT command to FILE menu
        fileMenu.add_command(label="Exit")

#---Main app starts here---
root = Tk()
app = mainApp(root)
#create menu
app.createMenu()
root.mainloop()

ณ ตอนนี้ หากเราคลิกที่คำสั่ง Exit ก็จะยังไม่มีอะไรเกิดขึ้น เราต้องเชื่อมคำสั่งนี้กับ method ซึ่งในที่นี้ก็คือคำสั่ง root.destroy (ผมลองใช้คำสั่ง root.quit ตามตัวอย่างหลายๆแห่งแล้วมันค้างงงงง)

แก้ไขเฉพาะบรรทัดเดียวครับ คือบรรทัด
 fileMenu.add_command(label="Exit")
เปลี่ยนเป็น
fileMenu.add_command(label="Exit", command=self.mainwindow.destroy)

จากนั้นเมนูคำสั่ง Exit ก็จะใช้งานได้แล้วครับ

ตอนหน้าเราจะลองเอาเมนูไปผูกกับคำสั่งในการประมวลผลภาพต่อครับ

No comments:

Post a Comment