Python এ GUI (Graphical User Interface) প্রোগ্রামিং করার জন্য বেশ কিছু জনপ্রিয় লাইব্রেরি রয়েছে, যেমন Tkinter, PyQt, Kivy, এবং WxPython। এই লাইব্রেরিগুলির মাধ্যমে ডেস্কটপ অ্যাপ্লিকেশন তৈরি করা যায় যা ব্যবহারকারীকে একটি গ্রাফিকাল ইন্টারফেস সরবরাহ করে। এখানে Python এর Tkinter লাইব্রেরি ব্যবহার করে একটি সহজ GUI অ্যাপ্লিকেশন তৈরি করার উদাহরণ দেখানো হয়েছে।
Tkinter: একটি পরিচিতি
Tkinter হল Python-এর স্ট্যান্ডার্ড GUI লাইব্রেরি, যা ডেস্কটপ অ্যাপ্লিকেশন তৈরির জন্য ব্যবহার করা হয়। এটি টুলকিট Tk এর জন্য একটি ইন্টারফেস প্রদান করে এবং উইন্ডো, বোতাম, লেবেল, টেক্সট বক্স ইত্যাদি তৈরির জন্য বিভিন্ন ফাংশন ও ক্লাস প্রদান করে।
Tkinter দিয়ে একটি সহজ অ্যাপ্লিকেশন তৈরি করা
নিচে Tkinter ব্যবহার করে একটি সিম্পল ক্যালকুলেটর অ্যাপ্লিকেশন তৈরির উদাহরণ দেয়া হলো।
Step 1: Tkinter ইম্পোর্ট করা
import tkinter as tk
from tkinter import messagebox
Step 2: মেইন উইন্ডো তৈরি করা
# মেইন উইন্ডো তৈরি করা
root = tk.Tk()
root.title("Simple Calculator")
root.geometry("300x400")
Step 3: ইন্টারফেস ডিজাইন
লেবেল, এন্ট্রি ফিল্ড এবং বোতাম তৈরি করে ইন্টারফেস ডিজাইন করা হবে।
# ইনপুট ফিল্ড
entry = tk.Entry(root, width=16, font=('Arial', 24), borderwidth=2, relief='solid')
entry.grid(row=0, column=0, columnspan=4)
# একটি বোতাম তৈরি করার জন্য ফাংশন
def create_button(text, row, col, command=None):
button = tk.Button(root, text=text, width=5, height=2, font=('Arial', 18), command=command)
button.grid(row=row, column=col, sticky="nsew")
return button
Step 4: ফাংশন ডিফাইন করা
প্রয়োজনীয় গাণিতিক অপারেশন সম্পাদনের জন্য বিভিন্ন ফাংশন ডিফাইন করা হবে।
# বোতাম ক্লিক ইভেন্ট হ্যান্ডলার
def on_button_click(value):
current_text = entry.get()
entry.delete(0, tk.END)
entry.insert(0, current_text + str(value))
# ফলাফল প্রদর্শনের ফাংশন
def calculate_result():
try:
result = eval(entry.get())
entry.delete(0, tk.END)
entry.insert(0, str(result))
except Exception as e:
messagebox.showerror("Error", "Invalid Input")
# এন্ট্রি ফিল্ড ক্লিয়ার করার ফাংশন
def clear_entry():
entry.delete(0, tk.END)
Step 5: বোতাম তৈরি করা
# বোতাম সংখ্যা
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'C', '0', '=', '+'
]
# বোতাম বসানো
row, col = 1, 0
for button_text in buttons:
if button_text == "=":
create_button(button_text, row, col, calculate_result)
elif button_text == "C":
create_button(button_text, row, col, clear_entry)
else:
create_button(button_text, row, col, lambda value=button_text: on_button_click(value))
col += 1
if col > 3:
col = 0
row += 1
Step 6: মেইন লুপ চালানো
# Tkinter মেইন লুপ চালানো
root.mainloop()
সম্পূর্ণ কোড একসাথে
import tkinter as tk
from tkinter import messagebox
# মেইন উইন্ডো তৈরি
root = tk.Tk()
root.title("Simple Calculator")
root.geometry("300x400")
# ইনপুট ফিল্ড
entry = tk.Entry(root, width=16, font=('Arial', 24), borderwidth=2, relief='solid')
entry.grid(row=0, column=0, columnspan=4)
# বোতাম ক্লিক ইভেন্ট হ্যান্ডলার
def on_button_click(value):
current_text = entry.get()
entry.delete(0, tk.END)
entry.insert(0, current_text + str(value))
# ফলাফল প্রদর্শনের ফাংশন
def calculate_result():
try:
result = eval(entry.get())
entry.delete(0, tk.END)
entry.insert(0, str(result))
except Exception as e:
messagebox.showerror("Error", "Invalid Input")
# এন্ট্রি ফিল্ড ক্লিয়ার করার ফাংশন
def clear_entry():
entry.delete(0, tk.END)
# বোতাম তৈরি ফাংশন
def create_button(text, row, col, command=None):
button = tk.Button(root, text=text, width=5, height=2, font=('Arial', 18), command=command)
button.grid(row=row, column=col, sticky="nsew")
return button
# বোতাম সংখ্যা
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'C', '0', '=', '+'
]
# বোতাম বসানো
row, col = 1, 0
for button_text in buttons:
if button_text == "=":
create_button(button_text, row, col, calculate_result)
elif button_text == "C":
create_button(button_text, row, col, clear_entry)
else:
create_button(button_text, row, col, lambda value=button_text: on_button_click(value))
col += 1
if col > 3:
col = 0
row += 1
# Tkinter মেইন লুপ চালানো
root.mainloop()
আউটপুট
উপরের কোডটি চালালে একটি সাধারণ ক্যালকুলেটর অ্যাপ তৈরি হবে, যেখানে ব্যবহারকারীরা সংখ্যা ইনপুট দিতে পারবে এবং +, -, *, / অপারেশন করে ফলাফল পাবে। Clear (C) বোতামটি ইনপুট ফিল্ড পরিষ্কার করবে এবং = বোতামটি ফলাফল প্রদর্শন করবে।
Tkinter এর কিছু গুরুত্বপূর্ণ উইজেট
- Label: তথ্য প্রদর্শনের জন্য ব্যবহৃত হয়।
- Button: বিভিন্ন কমান্ড চালানোর জন্য ব্যবহৃত হয়।
- Entry: ব্যবহারকারীর ইনপুট গ্রহণের জন্য ব্যবহৃত হয়।
- Text: বহু-লাইন ইনপুট ক্ষেত্রের জন্য ব্যবহৃত হয়।
- Frame: উইজেটগুলিকে গ্রুপ করতে ব্যবহৃত হয়।
- MessageBox: বিভিন্ন মেসেজ বা সতর্কতা প্রদর্শনের জন্য।
উপসংহার
Tkinter ব্যবহার করে Python-এ সহজে এবং দ্রুত GUI অ্যাপ্লিকেশন তৈরি করা যায়। ছোট প্রকল্প এবং দ্রুত অ্যাপ্লিকেশন তৈরির জন্য Tkinter বেশ কার্যকরী, তবে বড় এবং জটিল প্রজেক্টের জন্য PyQt বা Kivy এর মতো আরো উন্নত GUI ফ্রেমওয়ার্ক প্রয়োজন হতে পারে।
Tkinter পাইথনের একটি বিল্ট-ইন লাইব্রেরি যা গ্রাফিকাল ইউজার ইন্টারফেস (GUI) তৈরি করতে ব্যবহৃত হয়। Tkinter দিয়ে সহজে উইন্ডো, বোতাম, লেবেল, টেক্সট বক্স ইত্যাদি তৈরি করা যায়। এটি পাইথনে দ্রুত ও সহজে GUI অ্যাপ্লিকেশন তৈরি করার জন্য অন্যতম জনপ্রিয় টুল।
Tkinter ইনস্টলেশন
Tkinter পাইথনের সাথে বিল্ট-ইন আসে, তাই সাধারণত আলাদা ইনস্টলেশন লাগে না। তবে, নিশ্চিত করার জন্য আপনি নিচের কোড দিয়ে Tkinter ইম্পোর্ট করে কাজ করতে পারেন:
import tkinter as tk
একটি Tkinter উইন্ডো তৈরি করা
নিচের উদাহরণে একটি Tkinter উইন্ডো তৈরি করা হয়েছে এবং এটি একটি সরল লেবেল যুক্ত করা হয়েছে।
import tkinter as tk
# মেইন উইন্ডো তৈরি
window = tk.Tk()
window.title("My First Tkinter GUI")
window.geometry("300x200")
# একটি লেবেল যুক্ত করা
label = tk.Label(window, text="Hello, Tkinter!", font=("Arial", 16))
label.pack(pady=20)
# উইন্ডো প্রদর্শন
window.mainloop()
Tkinter উইজেটস (Widgets)
Tkinter-এ বিভিন্ন উইজেট বা উপাদান রয়েছে যা GUI তৈরি করতে ব্যবহৃত হয়। কিছু সাধারণ উইজেট এবং তাদের উদাহরণ নিচে দেওয়া হলো:
১. লেবেল (Label)
লেবেল সাধারণত ব্যবহারকারীদের জন্য নির্দেশ বা তথ্য প্রদর্শনের জন্য ব্যবহৃত হয়।
label = tk.Label(window, text="This is a Label")
label.pack()
২. বাটন (Button)
বাটন সাধারণত ক্লিক ইভেন্টের জন্য ব্যবহৃত হয়।
def on_button_click():
print("Button Clicked!")
button = tk.Button(window, text="Click Me", command=on_button_click)
button.pack(pady=10)
৩. এন্ট্রি (Entry)
এন্ট্রি উইজেট এক লাইনের টেক্সট ইনপুট নিতে ব্যবহৃত হয়, যেমন নাম বা পাসওয়ার্ড ইনপুট।
entry = tk.Entry(window)
entry.pack(pady=10)
৪. টেক্সট বক্স (Text)
টেক্সট বক্স উইজেট ব্যবহারকারীর থেকে একাধিক লাইনের ইনপুট নিতে ব্যবহৃত হয়।
text_box = tk.Text(window, height=5, width=30)
text_box.pack(pady=10)
৫. চেকবক্স (Checkbutton)
চেকবক্স উইজেট ব্যবহারকারীর থেকে হ্যাঁ/না ধরণের ইনপুট নিতে ব্যবহৃত হয়।
check_var = tk.IntVar()
checkbox = tk.Checkbutton(window, text="Accept Terms", variable=check_var)
checkbox.pack()
৬. রেডিও বাটন (Radiobutton)
রেডিও বাটন উইজেট একাধিক অপশন থেকে একটি নির্বাচন করতে ব্যবহৃত হয়।
radio_var = tk.StringVar()
radio1 = tk.Radiobutton(window, text="Option 1", variable=radio_var, value="1")
radio2 = tk.Radiobutton(window, text="Option 2", variable=radio_var, value="2")
radio1.pack()
radio2.pack()
Tkinter দিয়ে একটি সিম্পল GUI অ্যাপ্লিকেশন
নিচে একটি সিম্পল GUI অ্যাপ্লিকেশন তৈরি করা হয়েছে, যেখানে ব্যবহারকারী তার নাম ইনপুট করতে পারবে এবং সাবমিট বাটন ক্লিক করার পর গ্রীটিং মেসেজ দেখাবে।
import tkinter as tk
# উইন্ডো তৈরি
window = tk.Tk()
window.title("Greeting App")
window.geometry("300x200")
# লেবেল
label = tk.Label(window, text="Enter your name:")
label.pack(pady=10)
# এন্ট্রি
name_entry = tk.Entry(window)
name_entry.pack(pady=10)
# গ্রীটিং ফাংশন
def greet():
name = name_entry.get()
greeting_label.config(text=f"Hello, {name}!")
# সাবমিট বাটন
submit_button = tk.Button(window, text="Submit", command=greet)
submit_button.pack(pady=10)
# গ্রীটিং মেসেজের জন্য লেবেল
greeting_label = tk.Label(window, text="")
greeting_label.pack(pady=10)
# উইন্ডো প্রদর্শন
window.mainloop()
Tkinter উইন্ডোর লেআউট ব্যবস্থাপনা
Tkinter-এ উইজেট গুলোকে সঠিকভাবে প্লেস করার জন্য তিনটি লেআউট ব্যবস্থাপনা রয়েছে:
- pack(): উইজেটগুলোকে ধারাবাহিকভাবে পজিশন করে।
- place(): উইজেটের সুনির্দিষ্ট এক্স ওয়াই পজিশন নির্ধারণ করে।
- grid(): উইজেটকে সারি ও কলামে সাজায়।
label1 = tk.Label(window, text="Label 1")
label1.pack(side="top")
label2 = tk.Label(window, text="Label 2")
label2.place(x=50, y=100)
label3 = tk.Label(window, text="Label 3")
label3.grid(row=1, column=1)
সারসংক্ষেপ
Tkinter পাইথনে GUI অ্যাপ্লিকেশন তৈরি করার জন্য একটি শক্তিশালী টুল। এটি ব্যবহার করে লেবেল, বাটন, এন্ট্রি, টেক্সট বক্স, চেকবক্স, রেডিও বাটনের মতো উইজেট তৈরি করা যায় এবং তাদের লেআউট ব্যবস্থাপনা করা যায়। Tkinter দিয়ে দ্রুত ও সহজে ডেক্সটপ অ্যাপ্লিকেশন তৈরি করা সম্ভব।
Tkinter-এ উইজেট হলো ইন্টারফেসের সেই অংশ যেগুলো ব্যবহারকারীর সাথে ইন্টারঅ্যাকশন করতে ব্যবহৃত হয়। Tkinter-এ কয়েকটি গুরুত্বপূর্ণ উইজেট হলো Button, Label, Entry (Text Box) ইত্যাদি। এখানে প্রতিটি উইজেটের ব্যবহারের উদাহরণ দেয়া হলো।
Tkinter উইজেট: Button, Label, Entry (Text Box)
প্রথমে Tkinter ইম্পোর্ট এবং মেইন উইন্ডো তৈরি করতে হবে। তারপর বিভিন্ন উইজেট তৈরি করে উইন্ডোতে সাজানো হবে।
import tkinter as tk
# মেইন উইন্ডো তৈরি
root = tk.Tk()
root.title("Tkinter Widgets Example")
root.geometry("300x200")
১. Label (লেবেল)
Label উইজেট সাধারণত ইন্টারফেসে কোন টেক্সট বা তথ্য প্রদর্শনের জন্য ব্যবহৃত হয়।
উদাহরণ:
label = tk.Label(root, text="This is a Label", font=('Arial', 14))
label.pack(pady=10) # উইন্ডোতে লেবেলটি দেখানো
২. Button (বোতাম)
Button উইজেট ব্যবহারকারীর কোন একটি কমান্ড বা ইভেন্ট ট্রিগার করার জন্য ব্যবহৃত হয়। বোতামে ক্লিক করলে নির্দিষ্ট ফাংশন কল করা হয়।
উদাহরণ:
# একটি ফাংশন যা বোতাম ক্লিক করলে চলবে
def on_button_click():
label.config(text="Button Clicked!")
button = tk.Button(root, text="Click Me", command=on_button_click, font=('Arial', 14))
button.pack(pady=10)
৩. Entry (Text Box)
Entry উইজেট ব্যবহারকারীর ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। এটি এক-লাইন টেক্সট ইনপুটের জন্য উপযুক্ত।
উদাহরণ:
entry = tk.Entry(root, font=('Arial', 14), width=20)
entry.pack(pady=10)
# একটি নতুন বোতাম যা ইনপুট টেক্সট প্রদর্শন করবে
def show_text():
user_text = entry.get()
label.config(text=f"Entered: {user_text}")
button_show = tk.Button(root, text="Show Text", command=show_text, font=('Arial', 14))
button_show.pack(pady=10)
সম্পূর্ণ কোড একসাথে
import tkinter as tk
# মেইন উইন্ডো তৈরি
root = tk.Tk()
root.title("Tkinter Widgets Example")
root.geometry("300x250")
# লেবেল উইজেট
label = tk.Label(root, text="This is a Label", font=('Arial', 14))
label.pack(pady=10)
# বাটন ক্লিক ইভেন্ট
def on_button_click():
label.config(text="Button Clicked!")
# বাটন উইজেট
button = tk.Button(root, text="Click Me", command=on_button_click, font=('Arial', 14))
button.pack(pady=10)
# এন্ট্রি (টেক্সট বক্স) উইজেট
entry = tk.Entry(root, font=('Arial', 14), width=20)
entry.pack(pady=10)
# এন্ট্রি থেকে টেক্সট শো করার ফাংশন
def show_text():
user_text = entry.get()
label.config(text=f"Entered: {user_text}")
# Show Text বাটন
button_show = tk.Button(root, text="Show Text", command=show_text, font=('Arial', 14))
button_show.pack(pady=10)
# মেইন লুপ
root.mainloop()
উইজেটের বর্ণনা
- Label:
tk.Label()দিয়ে লেবেল তৈরি করা হয় এবং এটি সাধারণত স্ট্যাটিক টেক্সট প্রদর্শনের জন্য ব্যবহৃত হয়। - Button:
tk.Button()দিয়ে বাটন তৈরি করা হয় এবংcommandপ্যারামিটারে ক্লিক করলে চলার জন্য একটি ফাংশন উল্লেখ করা হয়। - Entry:
tk.Entry()দিয়ে এক-লাইন ইনপুট টেক্সট বক্স তৈরি করা হয়।entry.get()ব্যবহার করে ইনপুট টেক্সটটি বের করা যায়।
Tkinter উইজেটের কাস্টমাইজেশন
Tkinter-এ প্রতিটি উইজেট কাস্টমাইজ করা যায়। নিচে কিছু গুরুত্বপূর্ণ প্যারামিটার উল্লেখ করা হলো:
- text: উইজেটে প্রদর্শিত টেক্সট।
- font: উইজেটের টেক্সটের ফন্ট এবং আকার।
- bg (background): উইজেটের ব্যাকগ্রাউন্ড কালার।
- fg (foreground): উইজেটের টেক্সটের কালার।
- width এবং height: উইজেটের প্রস্থ এবং উচ্চতা।
- command: Button ক্লিক করার সময় কল করা ফাংশন।
উপসংহার
Tkinter-এ Label, Button, এবং Entry উইজেটের মাধ্যমে একটি সাধারণ GUI তৈরি করা সহজ এবং দ্রুত। Tkinter ব্যবহার করে ছোট প্রকল্প বা ডেক্সটপ অ্যাপ্লিকেশন তৈরি করা খুবই কার্যকরী।
Tkinter-এ ইভেন্ট হ্যান্ডলিং হলো ব্যবহারকারীর বিভিন্ন ক্রিয়া যেমন ক্লিক, কী-প্রেস, মাউস মুভমেন্ট ইত্যাদি অনুসারে অ্যাপ্লিকেশনকে সাড়া দেওয়ার প্রক্রিয়া। Tkinter-এ bind() মেথড ব্যবহার করে উইজেটের সাথে ইভেন্ট সংযুক্ত করা যায়। ইভেন্ট হ্যান্ডলিংয়ের মাধ্যমে অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ ও ব্যবহারকারী-বান্ধব করা যায়।
Tkinter-এ ইভেন্ট হ্যান্ডলিং
Tkinter-এ ইভেন্ট হ্যান্ডলিংয়ের জন্য bind() মেথড ব্যবহার করা হয়। bind() মেথডটি ইভেন্ট টাইপ এবং একটি ফাংশন গ্রহণ করে, যা ইভেন্ট ঘটলে কল করা হয়।
widget.bind("<event>", function)
কিছু সাধারণ ইভেন্ট
<Button-1>: মাউসের বাম বাটন ক্লিক<Button-2>: মাউসের মাঝের বাটন ক্লিক<Button-3>: মাউসের ডান বাটন ক্লিক<Double-Button-1>: ডাবল ক্লিক<Key>: যেকোনো কী প্রেস<Return>: Enter কী প্রেস<Escape>: Escape কী প্রেস<Motion>: মাউস মুভমেন্ট
উদাহরণ ১: মাউস ক্লিক ইভেন্ট
নিচের উদাহরণে একটি লেবেল এবং একটি বাটনের সাথে মাউস ক্লিক ইভেন্ট যুক্ত করা হয়েছে।
import tkinter as tk
# উইন্ডো তৈরি
window = tk.Tk()
window.title("Mouse Click Event")
# ফাংশন যা মাউস ক্লিক ইভেন্ট হ্যান্ডল করবে
def on_click(event):
print("Mouse clicked at", event.x, event.y)
# একটি লেবেল
label = tk.Label(window, text="Click anywhere on the window")
label.pack(pady=20)
# উইন্ডোর উপর মাউস ক্লিক ইভেন্ট সংযুক্ত করা
window.bind("<Button-1>", on_click)
# উইন্ডো প্রদর্শন
window.mainloop()
এখানে, যখন মাউসের বাম বাটন ক্লিক করা হবে, তখন on_click ফাংশনটি কল হবে এবং মাউসের এক্স ও ওয়াই কোঅর্ডিনেট প্রিন্ট করবে।
উদাহরণ ২: কী-প্রেস ইভেন্ট
নিচের উদাহরণে কী-প্রেস ইভেন্ট যুক্ত করা হয়েছে, যা ব্যবহারকারী যেকোনো কী চাপলে এটি কাজ করবে।
import tkinter as tk
# উইন্ডো তৈরি
window = tk.Tk()
window.title("Key Press Event")
# ফাংশন যা কী-প্রেস ইভেন্ট হ্যান্ডল করবে
def on_key_press(event):
print("Key pressed:", event.keysym)
# উইন্ডোর উপর কী-প্রেস ইভেন্ট সংযুক্ত করা
window.bind("<Key>", on_key_press)
# উইন্ডো প্রদর্শন
window.mainloop()
এখানে, যখন ব্যবহারকারী কোনো কী চাপবে, তখন on_key_press ফাংশনটি কল হবে এবং প্রিন্ট করবে কী কীটি চাপা হয়েছে।
উদাহরণ ৩: বাটনে ক্লিক ইভেন্ট
Tkinter-এর Button উইজেটের সাথে সরাসরি ক্লিক ইভেন্ট যুক্ত করা যায়।
import tkinter as tk
# উইন্ডো তৈরি
window = tk.Tk()
window.title("Button Click Event")
# ফাংশন যা বাটনের ক্লিক ইভেন্ট হ্যান্ডল করবে
def on_button_click():
print("Button Clicked!")
# একটি বাটন তৈরি এবং ক্লিক ইভেন্ট সংযুক্ত করা
button = tk.Button(window, text="Click Me", command=on_button_click)
button.pack(pady=20)
# উইন্ডো প্রদর্শন
window.mainloop()
এখানে on_button_click ফাংশনটি বাটন ক্লিকের মাধ্যমে কল হবে এবং কনসোলে মেসেজ প্রিন্ট করবে।
উদাহরণ ৪: মাউস মুভমেন্ট ইভেন্ট
Tkinter-এ Motion ইভেন্ট ব্যবহার করে মাউস মুভমেন্ট ট্র্যাক করা যায়।
import tkinter as tk
# উইন্ডো তৈরি
window = tk.Tk()
window.title("Mouse Motion Event")
# ফাংশন যা মাউস মুভমেন্ট ইভেন্ট হ্যান্ডল করবে
def on_mouse_move(event):
print("Mouse moved to", event.x, event.y)
# উইন্ডোর উপর মাউস মুভমেন্ট ইভেন্ট সংযুক্ত করা
window.bind("<Motion>", on_mouse_move)
# উইন্ডো প্রদর্শন
window.mainloop()
এখানে, যখন মাউস উইন্ডোর মধ্যে নড়াচড়া করবে, তখন on_mouse_move ফাংশনটি কল হবে এবং মাউসের বর্তমান পজিশন প্রিন্ট করবে।
ইভেন্ট সংক্ষিপ্ত রেফারেন্স
- Button Events:
<Button-1>,<Button-2>,<Button-3>,<Double-Button-1> - Key Events:
<Key>,<Return>,<Escape>,<BackSpace> - Mouse Motion:
<Motion> - Window Close:
<Destroy>
সারসংক্ষেপ
Tkinter-এর ইভেন্ট হ্যান্ডলিং GUI অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ ও ব্যবহারকারী-বান্ধব করে। ইভেন্ট হ্যান্ডলিং ব্যবহার করে মাউস ক্লিক, কী-প্রেস এবং মাউস মুভমেন্ট ইত্যাদি অনুযায়ী অ্যাপ্লিকেশন প্রতিক্রিয়া দিতে পারে, যা ব্যবহারকারীদের জন্য আরও আকর্ষণীয় এবং সহজ ব্যবহারযোগ্য ইন্টারফেস তৈরি করতে সাহায্য করে।
Read more