ছবি সংগৃহীত

পাইথন PyQt4 গুই প্রোগ্রামিং [পর্ব - ০] : ভূমিকা

শফিকুল আমিন
লেখক
প্রকাশিত: ২৫ অক্টোবর ২০১৫, ১৬:১১
আপডেট: ২৫ অক্টোবর ২০১৫, ১৬:১১

ছবি: Some rights reserved by yukop

আপনি যেহেতু এখানে "পাইথন গুই প্রোগ্রামিং" সম্পর্কে জানতে এসেছেন, সেহেতু আমি আশা করি আপনি ইতোমধ্যে পাইথন সম্পর্কে জানেন এবং পাইথনে কোডিং করতে পারেন। তবুও যারা পাইথনে নবীন, তাদের কথা মাথায় রেখে লেখাটি তৈরি করা হয়েছে যাতে তারা সহজে এই ধারাবাহিক টিউটোরিয়ালটি অনুসরণ করতে পারে। তাই আমরা এই পর্বে আলোচনা করব পাইথন কি, পাইথন দিয়ে কি কি করা যায়, গুই টুলকিট কি, পাইথনের জন্য কিছু গুই লাইব্রেরির তুলনা এবং সর্বশেষে কিছু প্রায়শই জিজ্ঞাসিত প্রশ্নের উত্তর। 

আজকের উক্তি:

কম্পিউটার আসলেই একটা অপদার্থ। কারণ এটি উত্তর দেওয়া ছাড়া আর কিছু জানে না।  ~ পাবলো পিকাসো

পাইথন কি?

সোজা বাংলায় পাইথন হল একটি উচ্চ স্তরের জেনারেল পারপাস প্রোগ্রামিং ভাষা। এখন থেকে প্রায় ২৪ বছর আগে, ১৯৯১ সালে "গুইডো ভ্যান রস্যিউম" এটি সর্বপ্রথম প্রকাশ করেন। পাইথন এমনভাবে নির্মাণ করা হয়েছে যাতে করে একজন প্রোগ্রামার অনেক সহজেই পাইথনে লেখা একটি প্রোগ্রামের সোর্স কোড পড়তে পারে। এছাড়াও সি++ বা, জাভার তুলনায় প্রোগ্রামাররা অনেক কম লাইনে কোনো ধারণা পাইথনে প্রকাশ করতে পারে। 

Guido van Rossum, the creator of Python

ছবি: গুইডো ভ্যান রস্যিউম, পাইথনের জনক; উইকিপিডিয়া

পাইথন একটি multi-paradigm বিশিষ্ট প্রোগ্রামিং ভাষা। এটি funtional programming, procedural programming এবং object-oriented programming স্টাইল সমর্থন করে। পাইথনের কোর সিনট্যাক্স ও সেমান্টিক্‌স খুবই সংক্ষিপ্ত, তবে ভাষাটির স্ট্যান্ডার্ড লাইব্রেরি অনেক সমৃদ্ধ। এছাড়াও জনপ্রিয় অপারেটিং সিস্টেমগুলোর জন্য স্ট্যান্ড-অ্যালোন পাইথন প্রোগ্রাম তৈরি করার জন্য থার্ড-পার্টি টুল (যেমন - Py2exe, Pyinstaller) ব্যবহার করা যেতে পারে। 

পাইথনকে PHP এর মত সার্ভার-সাইড-স্ক্রিপ্টিং ভাষা হিসেবে ব্যবহার করা যেতে পারে, আবার C এর মত ক্লায়েন্ট-সাইড প্রোগ্রামিং ভাষা হিসেবেও ব্যবহার করা যেতে পারে। তাই পাইথন দিয়ে যেমন ওয়েব অ্যাপলিকেশন তৈরি করা সম্ভব, পাইথন দিয়ে তেমনি আবার ডেস্কটপ অ্যাপলিকেশনও তৈরি করা সম্ভব। এছাড়াও পাইথন দিয়ে ক্রস-প্লাটফর্ম ডেস্কটপ অ্যাপলিকেশন তৈরি করা সম্ভব। অন্যদিকে, কম্পিউটার গেমস্ তৈরি করার জন্য PyGame ফ্রেমওয়ার্ক আছে। পাইথন দিয়ে অ্যান্ড্রয়েড অ্যাপস্ তৈরি করা যায়, পাইথন দিয়ে এমনকি মাইক্রোকন্ট্রোলার প্রোগ্রামিংও করা যায়

আপনি যদি এখনও পাইথন শিখে না থাকেন, তাহলে নিচের কিছু রিসোর্স বিনামূল্যে ব্যবহার করতে পারেন:

আমি এই ধারাবাহিক টিউটোরিয়ালটিতে পাইথন ২.৭.এক্স ব্যবহার করেছি। তাই আমাকে অনুসরণ করতে হলে, আপনাকে আগে পাইথন ২ শিখে আসতে হবে (অন্ততপক্ষে এর মৌলিক বিষয়গুলি)।

গুই কেন দরকার হয়?

আপনি যদি সাধারণ কম্পিউটার ব্যবহারকারী(মানে যারা ডেভেলপার নন, বা, কম্পিউটার বিজ্ঞানী নন তাদের) জন্য কোনো প্রোগ্রাম তৈরি করতে চান, তাহলে আজ হোক বা, কাল হোক, আপনাকে গুই প্রোগ্রামিং করা শিখতে হবে। কারণ একজন সাধারণ কম্পিউটার ব্যবহারকারীর জন্য একটি গ্রাফিক্যাল ইউজার ইন্টারফেস(মানে গুই) বিশিষ্ট প্রোগ্রাম তৈরি করা আবশ্যক। 

প্রথমে ওয়েব প্রযুক্তি (মানে HTML5, CSS3, জাভাস্ক্রিপ্ট ইত্যাদির) বাহিরে গুই প্রোগ্রামিং সম্পর্কে আমার কোনো ধারণা ছিল না। ছোটবেলায় কিছুদিন ভিস্যুয়াল বেসিক ডট নেট এবং সি শার্প ডট নেট নিয়ে কাজ করেছিলাম (যদিও এগুলো আমার এখন আর ভাল লাগে না)। প্রথমে পাইথনের জন্য শুধু Tk গুই টুলকিট বিদ্যমান ছিল। আমাদের ভাগ্য ভাল যে, বর্তমানে পাইথনের জন্য বেশ কিছু ভাল গুই লাইব্রেরি বিদ্যমান। 

গুই টুলকিট কি?

উইকিপিডিয়ার মতে,

A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements (called widgets) used to construct the graphical user interface (GUI) of programs.

পাইথনের জন্য কিছু ইউএক্স লাইব্রেরি:

সত্যি কথা বলতে আমি শুধু সেসব গুই লাইব্ররি ব্যবহার করতে আগ্রহী,

  • যেগুলো GNU+Linux ডিস্ট্রোসমূহতে কাজ করবে,
  • যেগুলোর পাইথন বাইন্ডিং আছে,
  • যেগুলো মুক্ত এবং মুক্ত সফটওয়্যার লাইসেন্সে প্রকাশ করা হয়েছে,
  • যেগুলো অন্যরা ব্যবহার করছে (মানে যেগুলোর জন্য যথেষ্ট ডকুমেন্টেশন, শেখার রিসোর্স ও উদাহরণ এবং কমিউনিটি সাপোর্ট আছে)

আমার জানা মতে, আমার শর্তসমূহ পূরণ করে এমন গুই টুলকিটগুলো হল: GTK, Qt, Tk এবং wxWidgets. এগুলোর মধ্যে কিছু গুই টুলকিটের বেশ কিছু পাইথন বাইন্ডিং এবং বেশ কিছু গুই বিল্ডার, বা, ডিজাইনার আছে। যেগুলো বহুল ব্যবহৃত, আমি সেগুলো খুঁজার চেষ্টা করেছি। আমার যদি কোনো কিছু যুক্ত করতে হয় কিংবা প্রতিস্থাপন করতে হয়, তাহলে আমাকে নিচে মন্তব্য করে জানাতে পারেন:

নাম GTK+ Qt Tk wxWidgets
সর্বশেষ সংষ্করণ
(২৫ অক্টোবর, ২০১৫ অনুযায়ী)
 3.16.7  5.5.0  8.6.4 3.0.2 
অফিসিয়াল ওয়েবসাইট gtk.org qt.io tcl.tk   wxwidgets.org
সর্বপ্রথম রিলিজ   ১৯৯৮ সালে ১৯৯৫ সালে   ১৯৯১ সালে  ১৯৯২ সালে
যে ভাষায় লেখা   সি  সি++  সি  সি++
ডকুমেন্টেশন  gtk.org/documentation.php doc.qt.io  tkdocs.com   wxwidgets.org/docs
টিউটোরিয়াল   developer.gnome.org/gtk-tutorial/stable http://doc.qt.io/qt-4.8/tutorials.html  tkdocs.com/tutorial  wxwidgets.org/docs/tutorials
StackOverflow তে প্রশ্ন   ৫,২১৬ টি  ৪৪,৪৩২ টি  ১,০৮৭ টি  ২,১৪৫ টি
StackOverflow তে উত্তরবিহীন প্রশ্ন   ১,৩০৭ টি  ১১,৮৬৮ টি ২৩৮ টি   ৪৮০ টি
লাইসেন্স  LGPL 2.1  LGPL 3.0 (মাল্টিপল লাইসেন্স)  BSD-style  wxWindows License
পাইথন বাইন্ডিং  PyGTK (docs) PyQt, PySide(docs)  Tkinter (docs)  wxPython (docs)
পাইথন ৩ সাপোর্ট  আছে  আছে  নিশ্চিত নয়  আছে
ডিজাইনার  Glade Interface Designer QtDesigner, QtCreator, QDevelop, Edyuk  SpecTcl  wxGlade
বিখ্যাত অ্যাপলিকেশন   বিভিন্ন জিনোম অ্যাপলিকেশন, যেমন - Inkscape, GIMP VLC, Virtual Box, কেডিই অ্যাপলিকেশন, যেমন - K3B, Dolphin  আমি তেমন একটা খুঁজে পেলাম না Code::Blocks
FileZilla
0 A.D.

পাইথন জগতে এগুলোর মধ্যে সবচেয়ে জনপ্রিয় হচ্ছে PyQt গুই লাইব্ররি। তবে সব কাজের জন্য পাইকিউটি ব্যবহার করতে হবে, ব্যাপারটা এমন না। আমি কোন সমস্যাটা সমাধান করব, সেটার উপর নির্ভর করে আমি কোন পাইথন লাইব্রেরিটা ব্যবহার করব। যেমন - আমি যদি কোনো জিএনইউ+লিনাক্স ডিস্ট্রোর জন্য কোনো পাইথন অ্যাপলিকেশন তৈরি করি, তাহলে আমি PyGTK ব্যবহার করব। এভাবে বিভিন্ন সমস্যা সমাধানের জন্য ভিন্ন ভিন্ন গুই লাইব্রেরি ব্যবহার করা যেতে পারে। কিন্তু পাইথনে গুই প্রোগ্রামিং শুরু করার জন্য PyQt আদর্শ একটি গুই লাইব্ররি। এছাড়াও প্রফেসনাল সফটওয়্যার তৈরি করতেও PyQt ব্যবহার করা হয়ে থাকে।

এছাড়াও আরেকটি গুই লাইব্রেরি আছে, সেটার নাম Kivy. সত্যি বলতে, এটি আসলে গুই না, এটি হল নুই (ন্যাচারাল ইউজার ইন্টারফেস)। আপাতত, এটি আমাদের মূল আলোচনার বাহিরে, তাই নিজ উদ্যোগে আপনি এটি একটু দেখে আসতে পারেন। তাদের অফিসিয়াল ওয়েবসাইটি হল kivy.org. আপনি যদি Kivy শিখতে আগ্রহী হন, তাহলে আপনি এখান থেকে Alexander Taylor এর টেক্সট ভিত্তিক টিউটোরিয়াল দেখে আসতে পারেন, অথবা, এখান থেকে তার ভিডিও টিউটোরিয়াল দেখতে পারেন। :D 

টিউটোরিয়ালোর গঠন:

আমি এই পুরো ধারাবাহিক টিউটোরিয়ালটিকে তিনটি ভাগে ভাগ করেছি।

  1. নবীন অংশ: এখানে পাইকিউটির মৌলিক ব্যবহার দেখানো হবে।
  2. অ্যাডভান্সড্ অংশ: এখানে পাইকিউটির কিছু অ্যাডভান্সড্ ব্যবহার দেখানো হবে।
  3. প্রকল্প তৈরি: এখানে পাইকিউটি ব্যবহার করে কিছু প্রকল্প তৈরি করা দেখানো হবে। যেমন - ক্যালকুলেটর তৈরি, টেক্সট এডিটর তৈরি ইত্যাদি।

পরবর্তী পর্বে আমরা PyQt4 নিয়ে বিস্তারিত জানব।

প্রায়শই জিজ্ঞাসিত প্রশ্ন (প্রাজিপ্র) -

শূন্য থেকে গণনা শুরু কেন?

  • কারণ ০ - এই পর্বে গুই প্রোগ্রামিং শেখানো শুরু হয় নি, এটি একটি ভূমিকা মাত্র।
  • কারণ ১ - প্রোগ্রামিং করতে করতে অভ্যাস হয়ে গিয়েছে, তাই শূন্য থেকে গণনা করি। :D 

এটি নিয়ে কিছু সুন্দর আর্টিকেল আছে। আপনি সেটা চাইলে পড়ে আসতে পারেন - Why computer scientists like to count from zero?

কেন পাইথন ২ এবং কেন পাইথন ৩ নয়?

সত্যি কথা বলতে, "পাইথন ২" ছেড়ে "পাইথন ৩" তে যাওয়ার জন্য আমি কোনো শক্ত কারণ খুঁজে পাই নি। তবে হ্যাঁ, আপনি যদি হার্ডকোর লেভেলের ওয়েব অ্যাপলিকেশন তৈরি করতে চান, তাহলে কেন না? অবশ্যই "পাইথন ৩" তে চলে যান। কিন্তু আমার ক্ষেত্রে ব্যাপারটা তেমন নয়। আমি কেবল সে দিনই পাইথন ৩ তে যাব, যে দিন সকল পাইথন লাইব্রেরি পাইথন ৩ তে পোর্ট করা হবে। আর আপনি যদি পাইথন ২ শিখে থাকেন, তাহলে আপনার জন্য পাইথন ৩ এ যাওয়া কোনো ব্যাপারই না। আপনি চাইলে এখান থেকে নিজেকে পাইথন ২ থেকে পাইথন ৩ তে পোর্ট করতে পারেন। :) 

কেন PyQt4 এবং কেন PyQt5 নয়?

আমি এটি নিয়ে বেশি কিছু বলব না। এটি Reddit এ একটি আলোচনা চলছে, আপনি চাইলে সেখানে গিয়ে সেটা পড়ে আসতে পারেন। কিন্তু আমার মতে, শেখার স্বার্থে PyQt4 ব্যবহার করা যেতে পারে। পরে বেশ সহজেই PyQt5 শিখে নেওয়া যায়।

কেন PyQt এবং কেন PySide নয়?

  • কারণ ০ - PyQt এবং PySide এর কোডিংয়ের মধ্যে বেশ পার্থক্য নেই,
  • কারণ ১ - PyQt তে তৈরি করা অ্যাপলিকেশন PySide এর তুলনায় বেশি stable হয়,
  • কারণ ২ - এখনও PyQt'র ডেভেলপমেন্ট PySide এর চেয়ে বেশি সক্রিয় এবং
  • কারণ ৩ - PyQt5 আছে কিন্তু PySide5 নেই :(  

এই প্রশ্ন সম্পর্কে আরও জানতে:

কেন PyQt এবং কেন wxPython নয়?

আমি আগেও বলেছি যে, "বিভিন্ন সমস্যা সমাধানের জন্য ভিন্ন ভিন্ন গুই লাইব্রেরি ব্যবহার করা যেতে পারে।" এখন আমি যদি চাই যে, আমার অ্যাপলিকেশনটি আরও native-looking হোক, তাহলে wxPython কেন না? তবে শুরুতে শেখার স্বার্থে Qt গুই টুলকিট ব্যবহার করা যেতেই পারে। এছাড়াও PyQt ব্যবহার করে আপনি প্রফেসনাল সফটওয়্যারও তৈরি করতে পারবেন। :D\

সাহায্যের জন্য কোথায় যাব?

আপাতত আমাকে ইমেইল করতে পারেন। পরবর্তী টিউটোরিয়ালগুলোতে এই প্রশ্ন নিয়ে আরও আলোচনা করব।

আমার ইমেইল ঠিকানা - [email protected]
আমার পিজিপি/জিপিজি কী - 4096R/BE258258

আরও জানতে পড়ুন:

Qt সম্পর্কিত:

 

[[[ পরবর্তী টিউটোরিয়ালপাইথন PyQt4 গুই প্রোগ্রামিং [পর্ব - ১] : পাইকিউটি৪ ]]]‌

ক্রিয়েটিভ কমন্স লাইসেন্স

পাইথন PyQt4 গুই প্রোগ্রামিং [পর্ব - ০] : ভূমিকা by শফিকুল আমিন is licensed under a Creative Commons অ্যাট্রিবিউশন-শেয়ার অ্যালাইক 4.0 আন্তর্জাতিক License.
http://martin-thoma.com/gui-programming-with-python/ কাজের উপর ভিত্তিকৃত।