ADs by Techtunes ADs
ADs by Techtunes ADs

মজার ও সহজ প্রোগ্রামিং, পাইথন প্রোগ্রামিং [পর্ব-২৪] :: PYQT দিয়ে পাইথনে গ্রাফিক্যাল ইউজার ইন্টারফেস সহ প্রোগ্রাম তৈরী

মজার ও সহজ পাইথন প্রোগ্রামিং

পা্ইথন মূলত একটা হাই লেভেল ও সহজবোধ্য ল্যাংগুয়েজ । এটা দিয়ে আমরা আজে দেখব কীভাবে ইন্টারফেস সহ বিভিন্ন প্রোগ্রাম তৈরী করা যায় । আমি আগে মূলত টেকটিউনসে tkinter  মডিউল নিয়ে লিখেছিলাম । আজ আমরা পাই কিউটি নামক মডিউল টা দেখব ।এটা আসলে অনেক পাওয়ারফুল ।মূলত পাইথনে গুই ডেভলপমেন্ট এর জন্য এই মডিউলটাই বেশী ব্যাবহৃত হয় । আসুন আজ আমরা এই সম্পর্কে একটু জানি ।

ADs by Techtunes ADs

প্রথমে এইখান থেকে মডিউলটা ডাউনলোড করে নিন । তারপর সিম্পলি এটা ইনস্টল করুন । তারপর পাইথন আই ডি ই ওপেন করে লিখুন :

import sys

from PyQt4 import QtGui

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

import sys
from PyQt4 import QtGui,QtCore
class Icon(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
            self.setGeometry(300, 300, 250, 150)
            self.setWindowTitle('Icon')
            self.setWindowIcon(QtGui.QIcon('icons/web.png'))
            quit = QtGui.QPushButton('Close', self)
            quit.setGeometry(10, 10, 60, 35)
            self.connect(quit, QtCore.SIGNAL('clicked()'),
                         QtGui.qApp, QtCore.SLOT('quit()'))
    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, 'Message',
                "Are you sure to quit?", QtGui.QMessageBox.Yes,
                 QtGui.QMessageBox.No)
        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
app = QtGui.QApplication(sys.argv)
ico = Icon()
ico.show()
sys.exit(app.exec_())

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

তারপর আমরা পরের কোড টা দেখি ।

self.setWindowTitle('Icon')

self.setWindowIcon(QtGui.QIcon('icons/web.png'))

আর তারপরের কোডটির মাধ্যমে আমরা আইকন ফাইলটি কোথায় রয়েছে সেটা বলে দিয়েছি । এখানে আপনারা আপনার আইকন ফাইলটি কোথায় আছে তার ফুল প্যাথ টা দেখিয়ে দেবেন ।

ADs by Techtunes ADs

self.setGeometry(300, 300, 250, 150)

প্রথম কোড টার মাধ্যমে আমরা মূলত প্রথমে ডেক্সটপের কোন পজিশনে উইন্ডোটা সো হবে সেটা বলে দিয়েছি (300,300) এই টুকুর মাধ্যমে । তারপর আমরা উইন্ডোর ডাইমেনশন টা বলে দিয়েছি পরের সংখ্য দুটোর মাধ্যমে । অর্থাৎ উইন্ডোর উচ্চতা ও আড়ে কত হবে সেটা ।

self.setWindowTitle('Icon')

এই কোডটার মাধ্যমে আমরা উইন্ডোটির টাইটেল কী হবে সেটা বলে দিয়েছি ।

quit = QtGui.QPushButton('Close', self)

এই কোডের কাজ হল আমাদের তৈরী উইন্ডো এর উপর একটা বাটন তৈরী করা যার নাম হবে     । নামটা আমরা ডাবল ইনভার্টেট কমার মধ্যে বলে দিয়েছি । এবং নিচের কোডের মাধ্যমে আমরা বাটনের সাইজ টা বলে দিয়েছি ।

quit.setGeometry(10, 10, 60, 35)

এবার নীচের কোডটি হল সবথেকে গুরুত্বপূর্ণ কোড ।

self.connect(quit, QtCore.SIGNAL('clicked()'),

মূলত কিউটি কাজ করে সিগন্যাল ও স্লটের মাধ্যমে । অর্থাৎ প্র্রোগ্রামটিতে যদি কেউ ক্লিক করে তবে এটা পাই কিউটির বিল্ট ইন ফাংশন কোয়েট কে কল করবে । ফলে এপ্লিকেশনটা আর কোন কাজ  করবে না ।এখানে আপনারা পরবর্তীতে নিজেদের তৈরী ফাংশন ও ইউজ করতে পারবেন ।

ADs by Techtunes ADs

QtGui.qApp, QtCore.SLOT('quit()'))

এবার দেখুন আমরা এই ক্লাসের ভেতর আরেকটা ফাংশন তৈরী করেছি ক্লোজইভেন্ট নামের । এর মূল কাজটা হল যখন কেউ এপ্লিকেশনটা ক্লোজ করতে ডাবে তখন একটা ইয়েস/নো ডায়লগ বক্স সো করানো । এখানে আমরা রিপ্লাই নামের একটা ভ্যারিয়েবল নিয়ে সেটার মধ্যে মেসেজ বক্সটা তৈরী করেছি  QtGui.QMessageBox.question  কোডের মাধ্যমে । তারপর মেসেজ বক্সের নাম ও মেসেজ বক্সের মধ্যে যে টেক্সট সো করবে সেটা ইনভার্টেড কমার মধ্যে বলে দিয়েছি । এরপর আমরা ২ টা অপশন দিয়েছি যেটা QT মডিউলের মধ্যে আগেই লেখা ছিল । সেটা হল :

QtGui.QMessageBox.Yes,

QtGui.QMessageBox.No)

এখন তারপর আমরা ইফ ইলস স্টেটমেন্টের মাধ্যমে বলে দিয়েছি যে যদি ইউজার Yes

বাটনে ক্লিক করে তাহলে     event.accept() এক্সিকিউট হবে । মানে এপ্লিকেশটা বন্ধ হবে । আর না হলে যে অবস্থায় আছে সেই অবস্থাতেই থাকবে । মানে            event.ignore() কোডটা এক্সিকিউট হবে ।

app = QtGui.QApplication(sys.argv)

এই কোডটা মূলত আমাদের সব কোডেই লিখতে হবে । কারণ এই কোডটাই মূলত ইন্টারফেসটা তৈরী করে । এর পরেই আমরা মূলত সব কোড প্লেস করব আগের ক্লাসসটাকে কল করার মাধ্যমে ।

ico = Icon()

উপরের কোডের মাধ্যমে আমরা উপরের লেখা আইকন ক্লাসটাকে কল করেছি ।

ADs by Techtunes ADs

ico.show()

এই কোডের মাধ্যমে আমরা আমাদের লেখা গুই টাকে সো করতে বলেছি ।

sys.exit(app.exec_())

এটা হল আমাদের কোডটাকে শেষ করার কোড । এটা লেখার মাধ্যমে আমাদের তৈরী কোডটা ডেসট্রয় করলাম ।Message PYQT নিয়ে আরও টিউটোরিয়াল পেতে এখানে একবার ঘুরে আসতে পারেন । আর লাইভ আপডেট পেতে আমাদের পাইথন বাংলা গ্রুপে জয়েন করুন ।

ADs by Techtunes ADs
Level 0

আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 6 বছর 12 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 82 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 16 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level New

darun hoise onek kisu jante parlam.python dia exe soft bananor jonno agula bohudin opekha koreo follow korsi.aktu regular post korle valo hoy.r code sekhar por soto akta kore xample dile aro valo hoto

Level 0

Thank you very much

ভাই আপনাকে অনেক ধন্যবাদ । অনেক দিন পর আপনি আবার tune করলেন ।