টিসিএল (Tcl) / টিকে (Tk) - মেনু বার এবং কনটেক্সট মেনু তৈরি করা
Tcl/Tk এর মাধ্যমে মেনু বার এবং কনটেক্সট মেনু তৈরি করা খুবই সহজ। মেনু বার একটি সাধারণ GUI উপাদান যা উইন্ডোতে সাধারণত উপরের অংশে থাকে এবং বিভিন্ন অপশনের মাধ্যমে ব্যবহারকারীকে ইন্টারঅ্যাকশন করতে সাহায্য করে। কনটেক্সট মেনু সাধারণত ডান ক্লিকের মাধ্যমে একটি নির্দিষ্ট উপাদানের সাথে সম্পর্কিত মেনু প্রদর্শন করে।
এখানে, আমরা Tcl/Tk-এ মেনু বার এবং কনটেক্সট মেনু তৈরি করার জন্য একটি বিস্তারিত উদাহরণ দেখাবো।
১. মেনু বার তৈরি করা (Creating a Menu Bar)
মেনু বার সাধারণত উইন্ডোর উপরের অংশে থাকে এবং এতে বিভিন্ন ধরনের কমান্ড (ফাইল, এডিট, হেল্প ইত্যাদি) থাকে। Tk-এ মেনু বার তৈরি করতে menu কমান্ড ব্যবহার করা হয়।
উদাহরণ: মেনু বার তৈরি করা
package require Tk
# উইন্ডো তৈরি
set window [tk::toplevel .]
wm title $window "Menu Bar Example"
# মেনু তৈরি করা
menu $window.menubar
# 'File' মেনু তৈরি করা
menu $window.menubar.file
$window.menubar add cascade -label "File" -menu $window.menubar.file
$window.menubar.file add command -label "Open" -command {puts "Open clicked!"}
$window.menubar.file add command -label "Save" -command {puts "Save clicked!"}
$window.menubar.file add separator
$window.menubar.file add command -label "Exit" -command {exit}
# 'Edit' মেনু তৈরি করা
menu $window.menubar.edit
$window.menubar add cascade -label "Edit" -menu $window.menubar.edit
$window.menubar.edit add command -label "Cut" -command {puts "Cut clicked!"}
$window.menubar.edit add command -label "Copy" -command {puts "Copy clicked!"}
$window.menubar.edit add command -label "Paste" -command {puts "Paste clicked!"}
# মেনু বার উইন্ডোর মধ্যে যুক্ত করা
config $window -menu $window.menubar
# ইভেন্ট লুপ শুরু
tk::MainLoopএখানে:
menu $window.menubarকমান্ডটি মেনু বার তৈরি করে।add cascadeকমান্ডটি মেনুর আইটেম (যেমন File বা Edit) তৈরি করে।add commandকমান্ডটি মেনুর অপশন (যেমন Open, Save, Exit) তৈরি করে।-commandপ্যারামিটারটি ব্যবহারকারী যে অপশনটি ক্লিক করবে, তার জন্য একটি প্রোসিজার নির্ধারণ করে।config $window -menu $window.menubarউইন্ডোর মেনু সেট করতে ব্যবহৃত হয়।
২. কনটেক্সট মেনু তৈরি করা (Creating a Context Menu)
কনটেক্সট মেনু সাধারণত ডান ক্লিকের মাধ্যমে প্রদর্শিত হয় এবং এটি সেই উপাদানটির সাথে সম্পর্কিত অপশন প্রদান করে। Tk-এ কনটেক্সট মেনু তৈরি করতে bind এবং menu কমান্ড ব্যবহার করা হয়।
উদাহরণ: কনটেক্সট মেনু তৈরি করা
package require Tk
# উইন্ডো তৈরি
set window [tk::toplevel .]
wm title $window "Context Menu Example"
# কনটেক্সট মেনু তৈরি করা
menu $window.contextMenu
# কনটেক্সট মেনুর আইটেম যোগ করা
$window.contextMenu add command -label "Undo" -command {puts "Undo clicked!"}
$window.contextMenu add command -label "Redo" -command {puts "Redo clicked!"}
$window.contextMenu add separator
$window.contextMenu add command -label "Exit" -command {exit}
# কনটেক্সট মেনু ট্রিগার করার জন্য ডান ক্লিকের জন্য একটি বাটন তৈরি করা
button $window.btn -text "Right Click Me" -width 20
# ডান ক্লিকের জন্য কনটেক্সট মেনু ইভেন্ট সেট করা
bind $window.btn <Button-3> {
$window.contextMenu popup $window.btn
}
# বাটন উইন্ডোর মধ্যে প্যাক করা
pack $window.btn
# ইভেন্ট লুপ শুরু
tk::MainLoopএখানে:
menu $window.contextMenuকনটেক্সট মেনু তৈরি করে।add commandকনটেক্সট মেনুর অপশন (যেমন Undo, Redo, Exit) যোগ করে।bind $window.btn <Button-3>বাটনের ডান ক্লিক ইভেন্টে কনটেক্সট মেনু প্রদর্শন করতে ব্যবহৃত হয়।<Button-3>হল ডান ক্লিকের ইভেন্ট।popupকনটেক্সট মেনু প্রদর্শন করার জন্য ব্যবহৃত হয়।
৩. মেনু বার এবং কনটেক্সট মেনুর মধ্যে পার্থক্য
- মেনু বার সাধারণত একটি স্থির অবস্থানে থাকে, যেমন উইন্ডোর উপরের অংশে এবং এটি ব্যবহৃত হয় সাধারণ মেনু অপশন (ফাইল, এডিট, হেল্প ইত্যাদি) প্রদর্শন করতে।
- কনটেক্সট মেনু শুধুমাত্র ডান ক্লিকের মাধ্যমে প্রদর্শিত হয় এবং এটি ব্যবহারকারীর সাথে সম্পর্কিত আরও নির্দিষ্ট অপশন দেখায়।
৪. অন্যান্য মেনু অপশন এবং কাস্টমাইজেশন
Tk-এ আপনি মেনু আইটেমগুলিকে আরও কাস্টমাইজ করতে পারেন যেমন:
- Separator: মেনু অপশনের মধ্যে একটি বিভাজক যোগ করা যায়।
- Checkbutton: মেনুতে চেকবক্স যুক্ত করা যায়।
- Radiobutton: মেনুতে রেডিও বাটন যুক্ত করা যায়।
উদাহরণ: চেকবক্স মেনু আইটেম
$window.contextMenu add checkbutton -label "Enable Feature" -variable enableFeatureউদাহরণ: রেডিও বাটন মেনু আইটেম
$window.contextMenu add radiobutton -label "Option 1" -value "1" -variable option
$window.contextMenu add radiobutton -label "Option 2" -value "2" -variable optionউপসংহার
Tk-এ মেনু বার এবং কনটেক্সট মেনু তৈরি করা খুবই সহজ এবং কার্যকর। আপনি menu, add command, add cascade, bind, এবং popup কমান্ডের মাধ্যমে মেনু তৈরি ও কনটেক্সট মেনু পরিচালনা করতে পারেন। Tk আপনাকে একটি নমনীয় এবং কাস্টমাইজযোগ্য মেনু সিস্টেম দেয়, যা আপনার Tcl/Tk অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারী-বান্ধব করে তোলে।
Read more