আমার প্রিয় টেকটিউনসের পাঠকরা , আশা করি সবাই ভাল আছেন । আজ বেশ কিছু দিন পর আমি আপনাদের মাঝে পাইথন নিয়ে আসলাম । আমরা আজ দেখব কীভাবে পাইথনে মেনুবার তৈরী করতে হয় । এটি একটা খুবই সহজ কাজ । আপনারা আজই এই সম্পর্কে মোটামুটি জ্ঞান লাভ করবেন । তো চলুন দেখে নেওয়া যাক এই কাজের কৌশল । প্রথমে নিচের চিত্র টা দেখুন , এইটা এখন আপনাদের তৈরী করে দেখাব ।
এবার এই পাইথন গুই টার সোর্স কোড দেখুন নিচে :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | from tkinter import * def hello(): messagebox.askyesno( "ask" , "are you really want to do this?" ) def donothing(): f = Toplevel(tt) button = Button(f, text = "show info" , command = hello) button.pack() tt = Tk() menubar = Menu(tt) filemenu = Menu(menubar, tearoff = 0 ) filemenu.add_command(label = "New" , command = donothing) filemenu.add_command(label = "Open" , command = donothing) filemenu.add_command(label = "Save" , command = donothing) filemenu.add_command(label = "Save as..." , command = donothing) filemenu.add_command(label = "Close" , command = donothing) filemenu.add_separator() filemenu.add_command(label = "Exit" , command = tt.quit) menubar.add_cascade(label = "File" , menu = filemenu) editmenu = Menu(menubar, tearoff = 0 ) editmenu.add_command(label = "Undo" , command = donothing) editmenu.add_separator() editmenu.add_command(label = "Cut" , command = donothing) editmenu.add_command(label = "Copy" , command = donothing) editmenu.add_command(label = "Paste" , command = donothing) editmenu.add_command(label = "Delete" , command = donothing) editmenu.add_command(label = "Select All" , command = donothing) menubar.add_cascade(label = "Edit" , menu = editmenu) helpmenu = Menu(menubar, tearoff = 0 ) helpmenu.add_command(label = "Help Index" , command = donothing) helpmenu.add_command(label = "About..." , command = donothing) menubar.add_cascade(label = "Help" , menu = helpmenu) tt.config(menu = menubar) tt.mainloop() |
দেখুন , এখানে আমরা অনেক গুলি নতুন কোড ব্যবহার করেছি । এগুলো হল পাইথনের মেনু তৈরীর জন্য প্রয়োজনীয় আইটেম । ভয় পাওয়ার কিছুই নেই । সবই বুঝতে পারবেন । আমি প্রথম থেকে ধাপে ধাপে সবই বর্ননা করব ।
দেখুন , প্রথমে আমরা tkinter মডিউলটা ইমপোর্ট করেছি । এরপর আমরা একটা ফাংশন তৈরী করেছি আগের পর্বের মত করে যেটা একটা yesno ডায়লগ বক্স তৈরী করবে ।
এরপর আমরা আরেকটি ফাংশন তৈরী করেছি donothing নামের যেটা f = Toplevel(tt) কোড এর মাধ্যমে একটা গুই সৃষ্টি করবে । এর পরের লাইনে আমি একটা কোড প্লেস করেছি যেটা উপরের গুই এর মাঝে একটা বাটন সৃষ্টি করেছে যার টেক্সক হবে techtunes G । এবং আমরা command = hello কোড দ্বারা বলে দিয়েছি যে এর বাটনে ক্লিক করলে এটি আমাদের উপরের তৈরী hello ফাংশনের ইয়েস নো উইন্ডোটি সো করবে । ব্যাস , আমাদের প্রাথমিক কাজ শেষ । এবার হল মেনু আইটেম তৈরী করার পালা । আসুন , দেখি কীভাবে এটি তৈরী করতে হয় ।
tt = Tk() দ্বারা আমরা আমাদের উপরের চিত্রের মূল গুই টা তৈরী করেছি । এরপর menu নামের একটা ভ্যারিয়েবল নিয়ে আমরা তার ভেতর Menu(tt) কোড দ্বারা মেনু তৈরী সূচনা করেছি । এর পর filemenu = Menu(menubar, tearoff=0) দ্বারা আমরা filemenu নামের একটা ভ্যারিয়েবল নিয়ে তারমধ্যে আমাদের মেনুবার , অর্থাৎ মেনুতে াক্লক করলে তার নিচে যে অপশন গুলো সো করবে সেই গুলো লেখা শুরু করার কথা ডিক্লেয়ার করেছি । এখানে আপনারা tearoff=0 এর মানেটা জানেন না । এটি হল একটা কমান্ড যেটি মেনু গুলো file লেখার কত নিচে থেকে শুরু হবে সেটাই বলে দেয় । এর মান ০ হলে file লেখার ঠিক নিচে থেকেই ড্রপডাউন মেনু গুলো সো করবে । আর এর মান ০ এর বেশী যেমন : ১ ২ ৩ প্রভৃতি হলে ড্রপডাউন মেনু গুলো একটা নির্দিষ্ট ডিসট্যান্স থেকে সো করবে । নিজে মান কম বেশী করে দেখুন , বিষয়টা ক্লিয়ার হবে ।
এরপর filemenu.add_command(label="New", command=donothing) কমান্ড দ্বারা আমরা আমাদের গুই তে প্রথম মেনু আইটেম যুক্ত করেছি । দেখুন , আপনারা যখন কোন মেনু আইটেম যুক্ত করতে যাবেন তখন আপনাদের ভ্যারিয়েবলের নামের পর . চিহ্ন দিয়ে add_command কোডটি লিখতে হবে । এরপর আমরা এর লেবেল বা নাম দিয়েছি New , এবং এটিতে ক্লিক করলে যা ঘটবে তা আমরা command=donothing দ্বারা বলে দিয়েছি যে এটাতে ক্লিক করলে donothing ফাংশন টি নিয়ে এসে সো কর । ব্যাস । এখন আপনারা যদি donothing এর স্থানে অন্য কোন ফাংশন তৈরী করে সেটিকমান্ডে দেন তা হলে সেই ফাংশনটিই এখানে কাজ করবে ।
যাই হো , এভাবে আমরা ফাইল মেনুর ভিতর সবগুলো মেনু আইটেম তৈরী করে ফেললাম । আপনারা যখন এই কাজ করবেন , তখন এক একটা মেনু আইটেম এর জন্য এক একটা আলাদা ফাংশন ইউজ করতে পারেন ।
এখন দেখুন আমরা exit মেনু আইটেম এর কমান্ড কিন্তু আলাদা দিয়েছি । এই tt.quit দ্বারা এই প্রোগ্রামটির কাজ সমাপ্ত ঘোষনা করা হচ্ছে ।
add_separator() এই কোড টার কাজ হল পর পর দুটি মেনু আইটেমের মধ্যে একটা দাগ বা সেপারেটর সৃষ্টি করা , যেমন উপরের চিত্রে ফাইল মেনুর মধ্যে খেয়াল করু exit মেনুর উপরে একট সেপারেটর আছে ।
এখন menubar.add_cascade(label="File", menu=filemenu) কোডটিউ হল সবথেকে গুরুত্বপূর্ন কোড । এই কোডের কাজ হল আমার এতক্ষন filemenu নামের ভ্যারিয়েবলের আন্ডারে যতগুলো সাবমেনু বা মেনু আইটেম তৈরী করে আসলাম সেগুলোকে মেনুবারে যোগ করে দেওয়া । এখানে আমরা এই মেনুর নাম দিয়েছি File ।
এখন আমাদের মেনু তৈরীর কাজ শেষ । এভাবে বাদবাকী সবগুলো মেনুর সাবমেনু তৈরী করে ফেলুন ও সেগুলোকে মেনুবারে এড করে দিন ।
tt.config(menu=menubar)
সর্বশেষ যে কোডটা আপনাদের বলব সেটা হল উপরের টা । এটাও খুবই গুরুত্ত্বপূর্ন কাজ । এর কাজ হল আপনি এতক্ষণ ধরে যে মেনু , সাবমেনু ও ফাংশন গুলো তৈরী করলেন সেগুলোকে পাইথন গুই এর ভিতর ঠিক ঠাক মত প্লেস করে কাজ করানো ।
এই হল আমার আজকের বিষয় । এখন এই কোডগুরোকে বাস্তব সম্মত ভাবে ইউজ করতে চাইলে পাইথনের ফাইলের কাজ ভালভাবে জানুন । ফাইল ওপেন , ক্লোজ , রাইট , ডিলিট এইসব ফাংশন তৈরী করে নিয়ে গুই এর মধ্যে কমান্ড দিয়ে দিন । ব্যাস , কাজ শেষ । এখন দেখুন আমাদের সম্পূর্ন কাজ । আপনারা এবার এটিকে পাইথনের Run module অপশনে গিয়ে রান করান । এবং যেকোন মেনুতে ক্লিক করুন ও তারপর বাটনে ক্লিক করুন । তারপর আপনাদের সামনে এমন একটা চিত্র আসবে :
সবাই ভাল থাকুন । সবাইকে ধন্যবাদ । আর কতদিন পরে আপনাদের মাঝে আসতে পারব তা বলতে পারছি না । সেই পর্যন্ত সবাই ভাল থাকবেন ।
আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 10 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 81 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 20 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...
ধন্যবাদ ভাই। চালিয়ে জান……সাথেই আছি।