ACMV MCQ Test App

Multiple choice questions Test တစ်ခု၏ GUI ကို tkinter ဖြင့် နမူနာ ရေးပြထားသည့် code တစ်ချို့ဖြစ်သည်။ Multi-window များ၊ Frame များ ခွဲခြင်းကို example code များ ဖြင့် ရေးပြထားသည်။

အဆင့်(၁) master window တည်ဆောက်သည်။

အဆင့်(၁) အဖြစ် master window တည်ဆောက်သည်။ Window1 ဟုနာမည်ပေးသည့် class အဖြစ် တည်ဆောက်သည်။

class Window1:
In [1]:
# အောက်မှ code သည် jupyter ipython notebook တွင် ပုံများကို ဖော်ပြရန်အတွက် ဖြစ်သည်။ 
from IPython.display import Image
Image(filename="ACMV_test_1.jpg")
Out[1]:
In [2]:
from tkinter import *
from tkinter import ttk

def main():
    root = Tk()
    app = Window1(root)
    root.mainloop()

class Window1:
    def __init__(self, master):
        self.master = master
        self.master.title("ACMV MCQ Test")
        self.master.geometry("1350x750+0+0")
        self.frame = Frame(self.master)
        self.frame.pack()

        self.lbl_Title = Label(self.frame, text="ACMV MCQ Test", font=("Aril", 50, "bold"), bd=20)
        self.lbl_Title.grid(row=0, column=0, columnspan=2, pady=20)


if __name__ == "__main__":
    main()
In [6]:
Image(filename="ACMV_test_2.jpg")
Out[6]:

အဆင့်(၂) "Exam Mode" နှင့် "Practice Mode" Window ထည့်သည်။

"Exam Mode" window အတွက် Window2 ဟုနာမည်ပေးသည့် class အဖြစ် တည်ဆောက်သည်။ "Practice Mode" window အတွက် Window2 ဟုနာမည်ပေးသည့် class အဖြစ် တည်ဆောက်သည်။ အောက် code များကို run လိုက်သည့်အခါ "Exam Mode" နှင့် "Practice Mode" Window သည် ပေါ်လာလိမ့်မည် မဟုတ်သေးပေ။ တစ်နည်းအားဖြင့် display လုပ်လိမ့်မည် မဟုတ်ပေ။

In [ ]:
from tkinter import *
from tkinter import ttk

def main():
    root = Tk()
    app = Window1(root)
    root.mainloop()

class Window1:
    def __init__(self, master):
        self.master = master
        self.master.title("ACMV MCQ Test")
        self.master.geometry("1350x750+0+0")
        self.frame = Frame(self.master)
        self.frame.pack()

        self.lbl_Title = Label(self.frame, text="ACMV MCQ Test", font=("Aril", 50, "bold"), bd=20)
        self.lbl_Title.grid(row=0, column=0, columnspan=2, pady=20)

        
class Window2:
    def __init__(self, master):
        self.master = master
        self.master.title("Exam Mode")
        self.master.geometry("1350x75+25+25")
        self.frame = Frame(self.master)
        self.frame.pack()

class Window3:
    def __init__(self, master):
        self.master = master
        self.master.title("Practice Mode")
        self.master.geometry("1350x75+50+50")
        self.frame = Frame(self.master)
        self.frame.pack()

if __name__ == "__main__":
    main()
In [7]:
Image(filename="ACMV_test_3.jpg")
Out[7]:

အဆင့်(၃) "Practice Mode" button နှင့် "Exam Mode" button ထည့်သည်။

အောက်က code များ ဖြင့် "Practice Mode" button နှင့် "Exam Mode" button ထည့်သည်။

self.btn_Practice = Button(self.frame, text="Practice Mode", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Practice.grid(row=1, column=1, pady=1)

        self.btn_Exam = Button(self.frame, text="Exam Mode", font=("Aril", 20, "bold"), command=self.Exam_Window)
        self.btn_Exam.grid(row=1, column=0, pady=2)

ထို button များကို click လိုက်လျှင် "Exam Mode" နှင့် "Practice Mode" Window ကို desplay လုပ်ရန် Exam_Window function နှင့် Practice_Window function ကို ထည့်ပေးသည်။

def Exam_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window2(self.newWindow)

    def Practice_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window3(self.newWindow)
In [ ]:
from tkinter import *
from tkinter import ttk

def main():
    root = Tk()
    app = Window1(root)
    root.mainloop()


class Window1:
    def __init__(self, master):
        self.master = master
        self.master.title("ACMV MCQ Test")
        self.master.geometry("1350x750+0+0")
        self.frame = Frame(self.master)
        self.frame.pack()

        self.lbl_Title = Label(self.frame, text="ACMV MCQ Test", font=("Aril", 50, "bold"), bd=20)
        self.lbl_Title.grid(row=0, column=0, columnspan=2, pady=20)

        self.btn_Practice = Button(self.frame, text="Practice Mode", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Practice.grid(row=1, column=1, pady=1)

        self.btn_Exam = Button(self.frame, text="Exam Mode", font=("Aril", 20, "bold"), command=self.Exam_Window)
        self.btn_Exam.grid(row=1, column=0, pady=2)

    def Exam_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window2(self.newWindow)

    def Practice_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window3(self.newWindow)

class Window2:
    def __init__(self, master):
        self.master = master
        self.master.title("Exam Mode")
        self.master.geometry("1350x75+25+25")
        self.frame = Frame(self.master)
        self.frame.pack()

class Window3:
    def __init__(self, master):
        self.master = master
        self.master.title("Practice Mode")
        self.master.geometry("1350x75+50+50")
        self.frame = Frame(self.master)
        self.frame.pack()

if __name__ == "__main__":
    main()

အဆင့်(၄) Frame (၃) တည်ဆောက်သည်။

အောက်က code များသည် Frame 1, 2 and 3 တို့ကို တည်ဆောက်သည့် code များဖြစ်သည်။

# Frame 1
        self.login_frame1 = Frame(self.frame, width=1010, height=300, bd=20, relief='ridge')
        self.login_frame1.grid(row=1, column=0)

        # Frame 2
        self.login_frame2 = Frame(self.frame, width=1010, height=100, bd=20, relief='ridge')
        self.login_frame2.grid(row=2, column=0)

        # Frame 3
        self.login_frame3 = Frame(self.frame, width=1010, height=100, bd=20, relief='ridge')
        self.login_frame3.grid(row=3, column=0)

Practice Button နှင့် Exam Button ကို Frame 3 ထဲတွင် ထည့်သည်။

In [ ]:
from tkinter import *
from tkinter import ttk

def main():
    root = Tk()
    app = Window1(root)
    root.mainloop()


class Window1:
    def __init__(self, master):
        self.master = master
        self.master.title("ACMV MCQ Test")
        self.master.geometry("1350x750+0+0")
        self.frame = Frame(self.master)
        self.frame.pack()

        self.lbl_Title = Label(self.frame, text="ACMV MCQ Test", font=("Aril", 50, "bold"), bd=20)
        self.lbl_Title.grid(row=0, column=0, columnspan=2, pady=20)
        
        # Frame 1
        self.login_frame1 = Frame(self.frame, width=1010, height=300, bd=20, relief='ridge')
        self.login_frame1.grid(row=1, column=0)
        
        # Frame 2
        self.login_frame2 = Frame(self.frame, width=1010, height=100, bd=20, relief='ridge')
        self.login_frame2.grid(row=2, column=0)

        # Frame 3
        self.login_frame3 = Frame(self.frame, width=1010, height=100, bd=20, relief='ridge')
        self.login_frame3.grid(row=3, column=0)

        # Practice Button နှင့် Exam Button ကို Frame 3 ထဲတွင် ထည့်သည်။ 
        self.btn_Practice = Button(self.login_frame3, text="Practice Mode", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Practice.grid(row=0, column=1, pady=1)

        self.btn_Exam = Button(self.login_frame3, text="Exam Mode", state = DISABLED, font=("Aril", 20, "bold"), command=self.Exam_Window)
        self.btn_Exam.grid(row=0, column=0, pady=2)

    def Exam_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window2(self.newWindow)

    def Practice_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window3(self.newWindow)

class Window2:
    def __init__(self, master):
        self.master = master
        self.master.title("Exam Mode")
        self.master.geometry("1350x75+25+25")
        self.frame = Frame(self.master)
        self.frame.pack()

class Window3:
    def __init__(self, master):
        self.master = master
        self.master.title("Practice Mode")
        self.master.geometry("1350x75+50+50")
        self.frame = Frame(self.master)
        self.frame.pack()

if __name__ == "__main__":
    main()

အဆင့်(၅) Login button, Reset button and Exit button တည်ဆောက်သည်။

ထို button (၃)ခုကို Frame 2 ထဲသို့ ထည့်သည်။

In [ ]:
from tkinter import *
from tkinter import ttk

def main():
    root = Tk()
    app = Window1(root)
    root.mainloop()


class Window1:
    def __init__(self, master):
        self.master = master
        self.master.title("ACMV MCQ Test")
        self.master.geometry("1350x750+0+0")
        self.frame = Frame(self.master)
        self.frame.pack()

        self.lbl_Title = Label(self.frame, text="ACMV MCQ Test", font=("Aril", 50, "bold"), bd=20)
        self.lbl_Title.grid(row=0, column=0, columnspan=2, pady=20)

        self.login_frame1 = Frame(self.frame, width=1010, height=300, bd=20, relief='ridge')
        self.login_frame1.grid(row=1, column=0)

        self.login_frame2 = Frame(self.frame, width=1010, height=100, bd=20, relief='ridge')
        self.login_frame2.grid(row=2, column=0)

        self.login_frame3 = Frame(self.frame, width=1010, height=100, bd=20, relief='ridge')
        self.login_frame3.grid(row=3, column=0)

        # Frame 2 
        self.btn_Login = Button(self.login_frame2, text="Login", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Login.grid(row=0, column=1, pady=1)

        self.btn_Reset = Button(self.login_frame2, text="Reset", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Reset.grid(row=0, column=2, pady=1)

        self.btn_Exit = Button(self.login_frame2, text="Exit", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Exit.grid(row=0, column=3, pady=1)

        # Frame 3 
        self.btn_Practice = Button(self.login_frame3, text="Practice Mode", font=("Aril", 20, "bold"), command=self.Practice_Window)
        self.btn_Practice.grid(row=0, column=1, pady=1)

        self.btn_Exam = Button(self.login_frame3, text="Exam Mode", state = DISABLED, font=("Aril", 20, "bold"), command=self.Exam_Window)
        self.btn_Exam.grid(row=0, column=0, pady=2)

    def Exam_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window2(self.newWindow)

    def Practice_Window(self):
        self.newWindow = Toplevel(self.master)
        self.app = Window3(self.newWindow)

class Window2:
    def __init__(self, master):
        self.master = master
        self.master.title("Exam Mode")
        self.master.geometry("1350x75+25+25")
        self.frame = Frame(self.master)
        self.frame.pack()

class Window3:
    def __init__(self, master):
        self.master = master
        self.master.title("Practice Mode")
        self.master.geometry("1350x75+50+50")
        self.frame = Frame(self.master)
        self.frame.pack()

if __name__ == "__main__":
    main()
In [ ]: