মজার ও সহজ প্রোগ্রামিং, পাইথন প্রোগ্রামিং [পর্ব-২৬] :: PYQT তে উইন্ডোর ও বাটনের লেআউট ম্যানেজমেন্ট

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

আজ আমরা দেখব কীভাবে পাইকিউটি তে কোন উইন্ডোর লেআউট ঠিক করতে হয়। মূলত লেআউটটা জরুরী এই জন্য যে , আপনি যখন বিভিন্ন প্লাটফর্মে এপ্লিকেশনটা ইউজ করবেন , তখন এটা কাজে লাগে । বা আপনি যখন মেইন উইন্ডো এর সাইজ পরিবর্তন করবেন তখন যাতে উইগেট গুলোর পজিশন চেঞ্জ হয়ে না যায় সেজন্যও এটা কাজে লাগে । তো দেখুন , কীভাবে পাইকউটিতে লেআউট ঠিক করতে হয় । প্রথমে সবাই নিচের কোডটা লিখে ফেলুন :


import sys
from PyQt4 import QtGui
class Absolute(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowTitle('Layout')
        label = QtGui.QLabel('Pythonbangla', self)
        label.move(15, 10)
        label = QtGui.QLabel('is', self)
        label.move(35, 40)
        label = QtGui.QLabel('one of the', self)
        label.move(55, 65)
        label = QtGui.QLabel('leading python programmers society', self)
        label.move(115, 65)
        label = QtGui.QLabel('in Bangladesh', self)
        label.move(135, 45)
        self.resize(250, 150)
app = QtGui.QApplication(sys.argv)
qb = Absolute()
qb.show()
sys.exit(app.exec_())

দেখুন , এখানে আমরা উইন্ডোর টাইটেল টা সেট করে দিয়েছি ।

self.setWindowTitle('Layout')

লেবেল নামের একটা ভ্যারিয়েবল নিয়ে তার মধ্যে যে লেখাটা সো করতে হবে সেটা লিখেছি ।

label = QtGui.QLabel('Pythonbangla', self)

এখানে লেখার পজিশনটা ঠিক করে দিয়েছি ।

label.move(15, 10)

একইভাবে আমরা অনেক গুলো লেভেল নিয়ে তার পজিশন ঠিক করে দিয়েছি । তারপর আমাদের উইন্ডোটা এমন হয়েছে ।

এবার আমরা উইন্ডো মধ্যে কোন বক্সে লেআউট কীভাবে ঠিক করতে হয় সেটা দেখব । মূলত পাইথনে QHBoxLayout ও QVBoxLayout

নামের দুটি ক্লাস আছে । সেটার মাধ্যমে আমরা এই লেআউটটা ঠিকক কররব । সবাই নীচের কোডটা লিখে ফেলুন :


import sys
from PyQt4 import QtGui
class BoxLayout(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowTitle('box layout')
#দুটি বাটন ক্রিয়েট করলাম
        ok = QtGui.QPushButton("OK")
        cancel = QtGui.QPushButton("Cancel")
        hbox = QtGui.QVBoxLayout()
#বক্সের জন্য জায়গা তৈরী করা
        hbox.addStretch(1)
#উপরের তৈরী ওকে ও ক্যানসেল বাটনটাকে এর মধ্যে পুশ করলাম ।
        hbox.addWidget(ok)
        hbox.addWidget(cancel)
#ভিবক্স নামের ভ্যারিয়েবলটাকে তৈরী করলাম
        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
#ভিবক্সের লেরআউট এর মধ্যে এইচ বক্সকে পুশ করলাম । অর্থাৎ উপরের বাটন ২ টি কে ভার্টিক্যালি সেট করলাম ।
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.resize(300, 150)
app = QtGui.QApplication(sys.argv)
qb = BoxLayout()
qb.show()
sys.exit(app.exec_())

আপনাদের কাছে উপরের কোড গুলো একটু গোলমেলে লাগতে পারে এ জন্য একটা কাজ করুন । আপনারা

vbox = QtGui.QVBoxLayout()

hbox = QtGui.QHBoxLayout()

এই দুটি কোড একটু উলটে পাল্টে দেখুন । মানে QVBoxLayout স্থানে QHBoxLayout , ও QHBoxLayout() স্থানে QVBoxLayout() দিয়ে ট্রাই করে দেখুন মূলত কী পরিবর্তন আসে । বা এইচ বক্স ভ্যারিয়েবলটাকে ভি বক্সের স্থানে ইউজ করে ও ভি বক্স কে এইচ বক্সের স্থান ইউজ করে দেখুন । তাহলে আশা করি আপনাদের আইডিয়াটা ক্লিয়ার হবে ।

আমরা মূলত এই দুটি ক্লাস ইউজ করেঠি বাটনকে হরিজন্টালি ও ভার্টিক্যালি সেট করার জন্য । সেটা আপনারা উপরের কাজ টা করলেই বুঝতে পারবেন ।

আপনারা পজিশন চেঞ্জ করে করে দেখতে পারেন । এভাবে বিভিন্ন পজিশন দিয়ে প্রাকটিস করতে থাকুন । পাইথনের বিভিন্ন সমস্যার সমাধান ও লাইভ আপডেট পেতে যুক্ত থাকুন আমাদের পাইথন বাংলা গ্রুপে ।

Level 2

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

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


টিউনস


আরও টিউনস


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


টিউমেন্টস

Level New

মামা আমি খুবই ব্যথিত দুঃখিত গত পোস্ট টা মানে ২৫ নাম্বার পোস্ট তা আমি পারিনি। অনেক বার ট্রাই করেও বার্থ হয়েছি………………………। কি করব বুঝতে পারছি না

    @hripon: আমিও দুঃখিত আপনার এই সমস্যাটা হবার জন্য । কিন্তু কী কারণে আপনার এই সমস্যা হচ্ছে সেটা ঠিক বুঝলাম না । আপনি যদি কোন ভবেই টেকটিউনস থেকে পড়তে না পারেন , তবে নীচের এড্রেসএ ট্রাই করতে পারেন :
    http://arindampal.wordpress.com/

আর না হলে ফেসবুকে আমার সাথে যোগাযোগ করুন । সমস্যাটা খুলে বলুন ।