PyQt5 प्रभावशाली विजेट व्यवस्थापन के लिए शक्तिशाली लेआउट मैनेजर प्रदान करता है। बॉक्स लेआउट, विशेष रूप से QVBoxLayout
(ऊर्ध्वाधर) और QHBoxLayout
(क्षैतिज), संरचित उपयोगकर्ता इंटरफेस बनाने के लिए मौलिक हैं। यह ट्यूटोरियल इन लेआउट का पता लगाता है, उनके उपयोग और विजेट संरेखण को नियंत्रित करने के तरीके को दर्शाता है।
विषयवस्तु की तालिका:
- ऊर्ध्वाधर बॉक्स लेआउट (QVBoxLayout)
- क्षैतिज बॉक्स लेआउट (QHBoxLayout)
- विजेट संरेखण को नियंत्रित करना
- जटिल UIs के लिए लेआउट को नेस्ट करना
ऊर्ध्वाधर बॉक्स लेआउट (QVBoxLayout)
QVBoxLayout
विजेट को लंबवत रूप से व्यवस्थित करता है, उन्हें एक के ऊपर एक रखता है। यह फॉर्म, सूचियाँ, या किसी भी परिदृश्य के लिए आदर्श है जिसके लिए स्तंभ व्यवस्था की आवश्यकता होती है।
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("ऊर्ध्वाधर बॉक्स लेआउट उदाहरण")
layout = QVBoxLayout()
layout.addWidget(QLabel("यह एक लेबल है।"))
layout.addWidget(QPushButton("मुझे क्लिक करें!"))
layout.addWidget(QLabel("एक और लेबल।"))
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
यह कोड एक विंडो बनाता है जिसमें एक ऊर्ध्वाधर लेआउट होता है जिसमें एक लेबल, एक बटन और एक और लेबल होता है।
क्षैतिज बॉक्स लेआउट (QHBoxLayout)
QHBoxLayout
विजेट को क्षैतिज रूप से व्यवस्थित करता है, उन्हें एक-दूसरे के बगल में रखता है। टूलबार, संबंधित नियंत्रणों को समूहीकृत करने या विजेट को एक पंक्ति में व्यवस्थित करने के लिए इसका उपयोग करें।
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("क्षैतिज बॉक्स लेआउट उदाहरण")
layout = QHBoxLayout()
layout.addWidget(QLabel("लेबल 1"))
layout.addWidget(QPushButton("बटन 1"))
layout.addWidget(QLabel("लेबल 2"))
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
यह उदाहरण पिछले वाले के समान है, लेकिन क्षैतिज व्यवस्था के लिए QHBoxLayout
का उपयोग करता है।
विजेट संरेखण को नियंत्रित करना
बॉक्स लेआउट में विजेट डिफ़ॉल्ट रूप से ऊपर/बाएँ संरेखण पर होते हैं। संरेखण को नियंत्रित करने के लिए, Qt.AlignHCenter
(क्षैतिज केंद्र), Qt.AlignVCenter
(ऊर्ध्वाधर केंद्र), या उनके संयोजन जैसे ध्वजों के साथ setAlignment()
विधि का उपयोग करें। यह विजेट को लेआउट में आवंटित स्थान के भीतर केंद्रित करता है।
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton, Qt
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("विजेट संरेखण उदाहरण")
layout = QHBoxLayout()
label = QLabel("केंद्रित लेबल")
layout.addWidget(label)
layout.setAlignment(label, Qt.AlignHCenter | Qt.AlignVCenter)
button = QPushButton("बटन")
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
यह उदाहरण लेआउट के भीतर क्षैतिज और लंबवत दोनों तरह से एक लेबल को केंद्रित करता है।
जटिल UIs के लिए लेआउट को नेस्ट करना
अधिक जटिल UIs के लिए, एक दूसरे के अंदर लेआउट को नेस्ट करें। यह जटिल व्यवस्थाओं और विजेट प्लेसमेंट पर बारीक नियंत्रण की अनुमति देता है।
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("नेस्टेड लेआउट उदाहरण")
mainLayout = QVBoxLayout()
# शीर्ष अनुभाग के लिए क्षैतिज लेआउट
topLayout = QHBoxLayout()
topLayout.addWidget(QLabel("शीर्ष बाएँ"))
topLayout.addWidget(QPushButton("शीर्ष दाएँ"))
mainLayout.addLayout(topLayout)
# निचले अनुभाग के लिए ऊर्ध्वाधर लेआउट
bottomLayout = QVBoxLayout()
bottomLayout.addWidget(QLabel("नीचे"))
mainLayout.addLayout(bottomLayout)
window.setLayout(mainLayout)
window.show()
sys.exit(app.exec_())
यह उदाहरण दो-खंड UI बनाने के लिए एक ऊर्ध्वाधर लेआउट के भीतर एक क्षैतिज लेआउट को नेस्ट करना दर्शाता है।
यह ट्यूटोरियल PyQt5 में बॉक्स लेआउट का उपयोग करने के लिए एक आधार प्रदान करता है। परिष्कृत और उपयोगकर्ता के अनुकूल अनुप्रयोग बनाने के लिए अधिक उन्नत लेआउट विकल्पों और सुविधाओं के लिए PyQt5 दस्तावेज़ देखें।