यह ट्यूटोरियल लचीले और व्यवस्थित यूजर इंटरफेस बनाने के लिए PyQt5 के शक्तिशाली QGridLayout
के उपयोग का व्यापक मार्गदर्शन प्रदान करता है। हम मूल बातें, सेल को फैलाने और विजेट स्ट्रेचिंग को नियंत्रित करने जैसी उन्नत तकनीकों को कवर करेंगे, और आपकी समझ को मजबूत करने के लिए व्यावहारिक उदाहरण प्रदान करेंगे।
विषयवस्तु की तालिका
1. QGridLayout का मूल उपयोग
QGridLayout
विजेट्स को पंक्तियों और स्तंभों के ग्रिड में व्यवस्थित करता है। प्रत्येक विजेट डिफ़ॉल्ट रूप से एकल सेल पर कब्जा कर लेता है। आइए एक सरल उदाहरण से शुरुआत करें:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("PyQt5 ग्रिड लेआउट उदाहरण")
layout = QGridLayout()
button1 = QPushButton("बटन 1")
button2 = QPushButton("बटन 2")
button3 = QPushButton("बटन 3")
button4 = QPushButton("बटन 4")
layout.addWidget(button1, 0, 0) # पंक्ति 0, स्तंभ 0
layout.addWidget(button2, 0, 1) # पंक्ति 0, स्तंभ 1
layout.addWidget(button3, 1, 0) # पंक्ति 1, स्तंभ 0
layout.addWidget(button4, 1, 1) # पंक्ति 1, स्तंभ 1
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
यह बटनों का 2×2 ग्रिड बनाता है। addWidget(widget, row, column)
निर्दिष्ट पंक्ति और स्तंभ (शून्य-अनुक्रमित) में एक विजेट जोड़ता है।
2. कई सेल को फैलाना
किसी विजेट को कई पंक्तियों या स्तंभों में फैलाने के लिए, addWidget(widget, row, column, rowspan, colspan)
का उपयोग करें। rowspan
और colspan
विजेट द्वारा कब्जा किए गए पंक्तियों और स्तंभों की संख्या को परिभाषित करते हैं।
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QLabel
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("PyQt5 ग्रिड लेआउट स्पैन उदाहरण")
layout = QGridLayout()
label = QLabel("यह लेबल दो स्तंभों में फैला हुआ है")
button1 = QPushButton("बटन 1")
button2 = QPushButton("बटन 2")
layout.addWidget(label, 0, 0, 1, 2) # दो स्तंभों में फैला हुआ है
layout.addWidget(button1, 1, 0)
layout.addWidget(button2, 1, 1)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
यहाँ, लेबल दो स्तंभों में फैला हुआ है।
3. विजेट स्ट्रेचिंग को नियंत्रित करना
डिफ़ॉल्ट रूप से, विजेट्स उनके न्यूनतम आकार के अनुसार आकार दिए जाते हैं। विजेट्स को उपलब्ध स्थान को भरने के लिए कैसे विस्तारित किया जाए, इसे नियंत्रित करने के लिए, setColumnStretch(column, stretch)
और setRowStretch(row, stretch)
का उपयोग करें। एक उच्च स्ट्रेच कारक का अर्थ है कि विजेट उपलब्ध स्थान के आनुपातिक रूप से बड़े हिस्से पर कब्जा कर लेगा।
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("PyQt5 ग्रिड लेआउट स्ट्रेच उदाहरण")
layout = QGridLayout()
button1 = QPushButton("बटन 1")
button2 = QPushButton("बटन 2")
layout.addWidget(button1, 0, 0)
layout.addWidget(button2, 0, 1)
layout.setColumnStretch(1, 2) # स्तंभ 1 स्तंभ 0 की तुलना में दोगुना फैलता है
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
button2
अब button1
के क्षैतिज स्थान का दोगुना हिस्सा लेगा।
4. उन्नत तकनीकें और विचार
अधिक जटिल लेआउट के लिए, विचार करें:
addLayout()
: नेस्टेड संरचनाओं के लिएQGridLayout
के भीतर अन्य लेआउट एम्बेड करें।- संरेखण: उनके सेल के भीतर विजेट्स के संरेखण को नियंत्रित करने के लिए
setAlignment()
का उपयोग करें। - अंतराल:
setVerticalSpacing()
औरsetHorizontalSpacing()
का उपयोग करके पंक्तियों और स्तंभों के बीच अंतराल को समायोजित करें। - मार्जिन:
setContentsMargins()
का उपयोग करके पूरे ग्रिड के चारों ओर मार्जिन को नियंत्रित करें।
इन तकनीकों में महारत हासिल करने से आप परिष्कृत और अत्यधिक अनुकूलनीय PyQt5 इंटरफेस बना पाएंगे।