Python GUI "tkinter"

Root Window

GUI တွေ စရေးတဲ့အခါ ပထမဆုံး root window တည်ဆောက်ရသည်။ ထိုနောက် ကျန် widow များ Frame များ widget များ တည်ဆောက်ရပါသည်။

(၁) root window တစ်ခု ဘယ်လို တည်ဆောက်မလဲ (၂) အရွယ်အစား အရောင် title တွေကို ဘယ်လို ထည့်မလဲ ပြောင်းမလဲ ဆိုတာတွေကို ဖော်ပြထားသည်။

root window အပြင် တခြား window များကို တစ်ပြိုင်နက် တည်ဆောက်နိုင်ပုံကိုလည်း ဖော်ပြထားသည်။

In [1]:
# Window များ တည်ဆောက်ခြင်း
import tkinter as tk

# define root window
root = tk.Tk()
root.iconbitmap("thinking.ico")
# run root window main loop
root.mainloop()

root window တည်ဆောက်ရန်အတွက် tkinter မှ Tk() widget ကို အသုံးပြုသည်။Tk() widget သည် tkinter မှ instance တစ်ခုဖြစ်သည်။

root = tk.Tk()

root window သည် top level widget ဖြစ်သည်။ root window ကို ကြီးမားသည့် ကွန်တိန်နာ(container)အဖြစ် မှတ်ယူနိုင်သည်။ ထို ကွန်တိန်နာ(container)ထဲတွင် ကျန် widget များကို ထည့်သွင်းတည်ဆောက်သည်။

root = tk.Tk()

ဟု ရေးလိုက်ရုံဖြင့် အလုပ်မလုပ်သေးပါ။ .mainloop() ပါသည့် code line ကို execute လုပ်ပေးရသည်။ တစ်နည်းအားဖြင့်

root = tk.Tk()

root.mainloop()

code နှစ်ကြောင်းတွဲမှ အလုပ်လုပ်သည်။ Tk() widget ကို တည်ဆောက်ပြီး .mainloop()ကို run မှသာ အလုပ်လုပ်သည်။

(၁) root.title()

root.title() ဖြင့် မိမိအလိုရှိသည့် window title ထည့်ပေးနိုင်သည်။

root.title("Root Window")

Root Window ဟူ၍ window title ထည့်ပေးသည်။

(၂) root window ၏ icon

root window ၏ icon ကို ပြောင်းနိုင်သည်။ အောက်က link တွင် icon ကို ရယူနိုင်သည်။ https://www.iconarchive.com/download/i108235/google/noto-emoji-smileys/10024-thinking-face.ico

root.iconbitmap("thinking.ico")

root window ၏ icon ကို ပြောင်းသည်။

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

(၃) root window အရွယ်အစား

root.geometry("250x300")

ဖြင့် root window ၏ အရွယ်အစား ကို ပြောင်းသည်။

(၄) root window အရွယ်အစား ပြောင်းလဲနိုင်ခွင့်, root.resizable(x,y)

root window အရွယ်အစားကို user များ ပြောင်းလဲနိုင်ခွင့် မပေးလိုပါ root.resizable() ဖြင့် ထိန်းချုပ်နိုင်သည်။

root.resizable(0,1)

ဆိုလျှင် x ဝင်ရိုးအတိုင်း ပြောင်းလဲခွင့် မပြု y ဝင်ရိုးအတိုင်းသာ ချဲ့နိုင် ချုံနိုင်သည်။

root.resizable(1,0)

ဆိုလျှင် x ဝင်ရိုးအတိုင်းသာ ချဲ့နိုင် ချုံနိုင်သည်။ y ဝင်ရိုးအတိုင်း ပြောင်းလဲခွင့် မပြု။

root.resizable(1,1)

ဆိုလျှင် x ဝင်ရိုးအတိုင်းနှင့် y ဝင်ရိုးအတိုင် ချဲ့နိုင် ချုံနိုင်သည်။

(၅) root window အရောင်(background color)

root.config() ဖြင့် root window ၏ option များကို configure လုပ်နိုင်သည်။ အရောင်(background color)ကို အပြရောင် အဖြစ် သတ်မှတ်ပေးသည်။

root.config(bg="blue")
In [3]:
# Window များ တည်ဆောက်ခြင်း
import tkinter as tk

# define root window
root = tk.Tk()
root.title("Root Window")
root.iconbitmap("thinking.ico")
root.geometry("250x300")
root.resizable(0,1)
root.config(bg="blue")

root.mainloop()
In [4]:
from IPython.display import Image
Image(filename="root_window.jpg")
Out[4]:

root window နှင့် ပေါ်မည့် တခြား window များ

root window နှင့် အတူ တစ်ပြိုင်နက် ပေါ်မည့် တခြား window များကိုလည်းတည်ဆောက်နိုင်သည်။ အောက်တွင် အတူပေါ်မည့် second window ကို တွဲ၍ တည်ဆောက်ပြထားသည်။

In [5]:
# Window များ တည်ဆောက်ခြင်း
import tkinter as tk

# define root window
root = tk.Tk()
root.title("Root Window")
root.iconbitmap("thinking.ico")
#https://www.iconarchive.com/download/i108235/google/noto-emoji-smileys/10024-thinking-face.ico
root.geometry("250x300")
root.resizable(0,1)
root.config(bg="blue")


# Second window
second_window = tk.Tk()
second_window.title("Second Window")
second_window.iconbitmap("thinking.ico")
second_window.geometry("250x300")
second_window.resizable(0,1)
second_window.config(bg="lightblue")

root.mainloop()
In [6]:
from IPython.display import Image
Image(filename="root_and_second_window.jpg")
Out[6]:

Ref: the art of doing master the basics of python guis by Michael Eramo
-End- ကောင်းထက်ညွန့်

In [ ]: