টিসিএল (Tcl) - Tk এর Canvas Widget এর ধারণা
Canvas উইজেট Tk-এ একটি খুবই শক্তিশালী এবং নমনীয় উইজেট, যা গ্রাফিক্স, ড্রইং, ইমেজ, এবং বিভিন্ন ধরনের আকার এবং অ্যানিমেশন তৈরি করার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে গ্রাফিকাল উপাদান প্রদর্শন করার জন্য ব্যবহৃত হয়, যেমন চিত্র, রেখা, আকার (circle, rectangle), ইমেজ, এবং অন্যান্য ভিজ্যুয়াল উপাদান। Tk-এ Canvas উইজেটটি ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে যেখানে আপনি ডায়নামিক্যালি গ্রাফিক্স কন্ট্রোল করতে পারেন।
এখানে Canvas Widget এর ধারণা এবং ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Canvas উইজেট কী? (What is Canvas Widget?)
Canvas উইজেটটি Tk-এ একটি বিশেষ ধরনের উইজেট যা ব্যবহারকারীকে গ্রাফিকাল উপাদান তৈরি এবং প্রদর্শন করতে দেয়। এর মাধ্যমে আপনি ছবি বা গ্রাফিক্স আঁকতে, ছবি জুম ইন বা আউট করতে, বা বিভিন্ন ধরনের অ্যানিমেশন এবং ইন্টারঅ্যাকটিভ ইভেন্ট তৈরি করতে পারেন। এটি একটি বিশেষ এলাকা তৈরি করে যেখানে আপনি বিভিন্ন ধরনের গ্রাফিকাল উপাদান যোগ করতে পারেন।
২. Canvas উইজেটের মৌলিক উপাদান (Basic Elements of Canvas Widget)
Tk-এর Canvas উইজেটের মধ্যে বিভিন্ন গ্রাফিকাল উপাদান যোগ করা হয়:
- Line: একটি রেখা আঁকা।
- Rectangle: একটি আয়তক্ষেত্র আঁকা।
- Oval: একটি বৃত্ত বা এলিপ্স আঁকা।
- Text: টেক্সট প্রদর্শন।
- Image: ছবি প্রদর্শন।
- Polygon: একাধিক পয়েন্ট দিয়ে একটি আয়তক্ষেত্র বা অন্যান্য আকার আঁকা।
- Arc: একটি আর্ক (বৃত্তের অংশ) আঁকা।
৩. Canvas উইজেট তৈরি করা (Creating Canvas Widget)
Tk-এ একটি Canvas উইজেট তৈরি করতে canvas কমান্ড ব্যবহার করা হয়। এখানে আপনাকে উইজেটের মধ্যে একটি গ্রাফিক্যাল এলাকা (অঞ্চল) তৈরি করতে হবে যেখানে বিভিন্ন উপাদান প্রদর্শন করা হবে।
উদাহরণ:
package require Tk
# উইন্ডো তৈরি
set window [tk::toplevel .]
# Canvas উইজেট তৈরি
canvas $window.myCanvas -width 400 -height 400 -bg "lightgrey"
# Canvas উইজেটটি উইন্ডোর মধ্যে প্যাক করা
pack $window.myCanvas
# ইভেন্ট লুপ শুরু
tk::MainLoopএখানে, canvas উইজেটটি তৈরি করা হয়েছে যার প্রস্থ (width) এবং উচ্চতা (height) ৪০০ পিক্সেল। ব্যাকগ্রাউন্ড রঙ lightgrey দেওয়া হয়েছে।
৪. Canvas-এ গ্রাফিক্স আঁকা (Drawing Graphics on the Canvas)
Canvas-এ বিভিন্ন গ্রাফিক্যাল উপাদান আঁকতে create কমান্ড ব্যবহার করা হয়। এখানে কিছু উদাহরণ দেওয়া হলো।
৪.১. Line (রেখা আঁকা)
# Canvas-এ একটি রেখা আঁকা
$window.myCanvas create line 50 50 150 150 -fill "blue" -width 3এখানে, create line কমান্ডটি একটি রেখা আঁকছে যার শুরু এবং শেষ পয়েন্ট (50,50) এবং (150,150)। এই রেখাটি নীল রঙের এবং এর প্রস্থ ৩ পিক্সেল।
৪.২. Rectangle (আয়তক্ষেত্র আঁকা)
# Canvas-এ একটি আয়তক্ষেত্র আঁকা
$window.myCanvas create rectangle 50 50 150 150 -fill "green" -outline "black" -width 2এখানে, create rectangle কমান্ডটি একটি আয়তক্ষেত্র আঁকছে যার কোণগুলো (50,50) থেকে (150,150)। এই আয়তক্ষেত্রটির ভিতরটি সবুজ এবং সীমানা কালো রঙের।
৪.৩. Oval (বৃত্ত আঁকা)
# Canvas-এ একটি বৃত্ত আঁকা
$window.myCanvas create oval 100 100 200 200 -fill "yellow" -outline "red" -width 3এখানে, create oval কমান্ডটি একটি বৃত্ত আঁকছে যার সীমানা (100,100) থেকে (200,200)। বৃত্তটির ভিতরটি হলুদ এবং সীমানা লাল রঙের।
৪.৪. Text (টেক্সট)
# Canvas-এ টেক্সট প্রদর্শন
$window.myCanvas create text 150 150 -text "Hello, Tk!" -font "Arial 20 bold"এখানে, create text কমান্ডটি (150,150) পয়েন্টে "Hello, Tk!" টেক্সট প্রদর্শন করছে, এবং ফন্টটি Arial, সাইজ ২০, বোল্ড।
৪.৫. Image (ছবি)
# Canvas-এ ছবি প্রদর্শন
set img [image create photo -file "image.png"]
$window.myCanvas create image 200 200 -image $imgএখানে, একটি ছবি (যেমন "image.png") Canvas-এ (200,200) পয়েন্টে প্রদর্শন করা হচ্ছে।
৫. Canvas-এ ইন্টারঅ্যাকশন (Interaction with Canvas)
Tk Canvas উইজেট ব্যবহার করে আপনি ইন্টারঅ্যাকশন তৈরি করতে পারেন, যেমন মাউস ক্লিক, ড্র্যাগ বা রিলিজ। bind কমান্ড ব্যবহার করে আপনি ইভেন্ট হ্যান্ডলিং করতে পারেন।
উদাহরণ: মাউস ক্লিক ইভেন্ট
# Canvas-এ একটি আয়তক্ষেত্র আঁকা
set rectId [$window.myCanvas create rectangle 50 50 150 150 -fill "blue"]
# মাউস ক্লিক ইভেন্টে আয়তক্ষেত্রের রঙ পরিবর্তন
bind $window.myCanvas <Button-1> {
$window.myCanvas itemconfigure $rectId -fill "red"
}এখানে, আপনি যখন মাউসের বাটন ক্লিক করবেন, তখন আয়তক্ষেত্রটির রঙ নীল থেকে লাল হয়ে যাবে।
৬. Canvas-এ অ্যানিমেশন (Animation on Canvas)
Tk Canvas-এ অ্যানিমেশন তৈরি করার জন্য আপনি একাধিক উপাদান একের পর এক স্থানান্তর করতে পারেন। after কমান্ড ব্যবহার করে নির্দিষ্ট সময় পর পর একটি কোড চালানো যায়, যা অ্যানিমেশন তৈরি করতে সাহায্য করে।
উদাহরণ: একটি বস্তু স্থানান্তর করা
# Canvas-এ একটি বৃত্ত আঁকা
set circleId [$window.myCanvas create oval 50 50 100 100 -fill "green"]
# বৃত্তটিকে স্থানান্তর করার ফাংশন
proc moveCircle {} {
global circleId
$window.myCanvas move $circleId 5 0 ;# ৫ পিক্সেল ডানে সরানো
after 50 moveCircle ;# প্রতি ৫০ মিলিসেকেন্ড পর পর চলবে
}
# অ্যানিমেশন শুরু
moveCircleএখানে, একটি বৃত্ত স্থানান্তরিত হবে প্রতি ৫০ মিলিসেকেন্ডে, এবং এটি ডানে সরতে থাকবে।
উপসংহার
Tk Canvas উইজেট একটি শক্তিশালী টুল যা টিসিএল ব্যবহারকারীদের গ্রাফিক্যাল উপাদান তৈরি এবং নিয়ন্ত্রণ করতে সাহায্য করে। এটি বিশেষভাবে উপকারী যখন আপনি গ্রাফ, চার্ট, অ্যানিমেশন বা ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে চান। Tk Canvas-এ আপনি সহজেই লাইন, রেকটেঙ্গল, ওভাল, টেক্সট, ইমেজ এবং পলিগন যোগ করতে পারেন এবং এতে ইভেন্ট হ্যান্ডলিং ও অ্যানিমেশন সমর্থন থাকে।
Read more