pyqt5 ट्यूटोरियल
Pyqt5 से आरंभ करना
खोज…
टिप्पणियों
यह अनुभाग pyqt5 क्या है का एक सिंहावलोकन प्रदान करता है, और क्यों एक डेवलपर इसका उपयोग करना चाह सकता है।
यह pyqt5 के भीतर किसी भी बड़े विषयों का उल्लेख करना चाहिए, और संबंधित विषयों के लिए लिंक करना चाहिए। चूंकि pyqt5 के लिए दस्तावेज़ीकरण नया है, इसलिए आपको उन संबंधित विषयों के प्रारंभिक संस्करण बनाने की आवश्यकता हो सकती है।
स्थापना या सेटअप
- एनाकोंडा स्थापित करें (PyQt5 बिल्ड-इन है), विशेष रूप से विंडोज़ उपयोगकर्ता के लिए।
- PyCharm (बाहरी उपकरण) में QtDesigner और QtUIConvert को एकीकृत करें
- डेमो लिखें
- नई window.ui बाहरी उपकरण द्वारा (QtDesigner)
- बाहरी टूल द्वारा विंडोहोम में कनवर्ट करें (PyUIConv)
- डेमो
import sys from PyQt5.QtWidgets import QApplication,QMainWindow from window import Ui_MainWindow if __name__ == '__main__': app = QApplication(sys.argv) w = QMainWindow() ui = Ui_MainWindow() ui.setupUi(w) w.show() sys.exit(app.exec_())
हैलो वर्ल्ड उदाहरण
यह उदाहरण एक बटन के साथ एक सरल विंडो और एक लेआउट में एक लाइन-एडिट बनाता है। यह यह भी दर्शाता है कि किसी सिग्नल को स्लॉट से कैसे जोड़ा जाए, ताकि बटन पर क्लिक करने से लाइन-एडिट में कुछ टेक्स्ट जुड़ जाए।
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Hello World')
w.show()
sys.exit(app.exec_())
विश्लेषण
app = QtWidgets.QApplication(sys.argv)
प्रत्येक PyQt5 एप्लिकेशन को एक एप्लिकेशन ऑब्जेक्ट बनाना होगा। Sys.argv पैरामीटर एक कमांड लाइन से तर्कों की एक सूची है। पायथन लिपियों को शेल से चलाया जा सकता है।
w = QWidget()
QWidget
विजेट QWidget
में सभी यूजर इंटरफेस ऑब्जेक्ट्स का बेस क्लास है। हम QWidget
लिए डिफ़ॉल्ट कंस्ट्रक्टर प्रदान करते हैं। डिफ़ॉल्ट कंस्ट्रक्टर का कोई अभिभावक नहीं है। बिना पैरेंट वाले विजेट को विंडो कहा जाता है।
w.resize(250, 150)
resize()
विधि विजेट का आकार बदलता है। यह 250px चौड़ा और 150px ऊंचा है।
w.move(300, 300)
move()
विधि विजेट को x = 300, y = 300 निर्देशांक पर स्क्रीन पर स्थिति में ले जाती है।
w.setWindowTitle('Hello World')
यहां हमने अपनी खिड़की के लिए शीर्षक निर्धारित किया है। शीर्षक में शीर्षक दिखाया गया है।
w.show()
show()
विधि स्क्रीन पर विजेट प्रदर्शित करती है। एक विजेट पहले मेमोरी में बनाया जाता है और बाद में स्क्रीन पर दिखाया जाता है।
sys.exit(app.exec_())
अंत में, हम आवेदन के मुख्य भाग में प्रवेश करते हैं। इवेंट हैंडलिंग इसी बिंदु से शुरू होती है। मैनलूप विंडो सिस्टम से ईवेंट प्राप्त करता है और उन्हें एप्लिकेशन विजेट पर भेजता है। यदि हम exit()
विधि को कहते हैं तो मुख्यलूप समाप्त हो जाता है या मुख्य विजेट नष्ट हो जाता है। sys.exit()
विधि एक साफ निकास सुनिश्चित करती है। पर्यावरण को सूचित किया जाएगा कि आवेदन कैसे समाप्त हुआ।
exec_()
विधि में एक अंडरस्कोर है। ऐसा इसलिए है क्योंकि निष्पादन एक पायथन कीवर्ड है। और इस प्रकार, इसके बजाय exec_()
का उपयोग किया गया था।
एक एप्लिकेशन आइकन जोड़ना
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
विश्लेषण
पायथन में फ़ंक्शन तर्क
पायथन में, उपयोगकर्ता-परिभाषित फ़ंक्शन चार अलग-अलग प्रकार के तर्क ले सकते हैं।
- डिफ़ॉल्ट तर्क:
कार्य की परिभाषा
def defaultArg( name, msg = "Hello!"):
फंक्शन कॉल
defaultArg( name)
- आवश्यक तर्क:
कार्य की परिभाषा
def requiredArg (str,num):
समारोह कॉल:
requiredArg ("Hello",12)
- कीवर्ड तर्क:
कार्य की परिभाषा
def keywordArg( name, role ):
फंक्शन कॉल
keywordArg( name = "Tom", role = "Manager")
या
keywordArg( role = "Manager", name = "Tom")
- विभिन्न प्रकार के तर्क:
कार्य की परिभाषा
def varlengthArgs(*varargs):
फंक्शन कॉल
varlengthArgs(30,40,50,60)
class Example(QWidget):
def __init__(self):
super().__init__()
...
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में तीन महत्वपूर्ण चीजें हैं कक्षाएं, डेटा और विधियाँ। यहाँ हम एक नई कक्षा बनाते हैं जिसका नाम Example
। Example
वर्ग QWidget
वर्ग से विरासत में QWidget
। इसका मतलब है कि हम दो कंस्ट्रक्टरों को कहते हैं: पहला Example
वर्ग के लिए और दूसरा अनुवांशिक वर्ग के लिए। super()
विधि Example
वर्ग के मूल ऑब्जेक्ट को लौटाता है और हम इसके निर्माता को कहते हैं। self
चर वस्तु को संदर्भित करता है।
हमने __init__
उपयोग क्यों किया है?
इसकी जांच करें:
class A(object):
def __init__(self):
self.lst = []
class B(object):
lst = []
और अब प्रयास करें:
>>> x = B()
>>> y = B()
>>> x.lst.append(1)
>>> y.lst.append(2)
>>> x.lst
[1, 2]
>>> x.lst is y.lst
True
और इस:
>>> x = A()
>>> y = A()
>>> x.lst.append(1)
>>> y.lst.append(2)
>>> x.lst
[1]
>>> x.lst is y.lst
False
क्या इसका मतलब है कि क्लास बी में एक्स इंस्टेंटेशन से पहले स्थापित है?
हां, यह एक वर्गीय विशेषता है (इसे उदाहरणों के बीच साझा किया जाता है)। जबकि कक्षा ए में यह एक उदाहरण विशेषता है।
self.initUI()
GUI का निर्माण initUI()
पद्धति से किया गया है।
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))
सभी तीन तरीकों को QWidget
वर्ग से विरासत में मिला है। setGeometry()
दो काम करता है: यह स्क्रीन पर विंडो को setGeometry()
करता है और इसका आकार सेट करता है। पहले दो पैरामीटर विंडो के x और y स्थान हैं। तीसरी चौड़ाई है और चौथी खिड़की की ऊंचाई है। वास्तव में, यह एक विधि में resize()
और move()
विधियों को जोड़ता है। अंतिम विधि एप्लिकेशन आइकन सेट करती है। ऐसा करने के लिए, हमने एक QIcon
ऑब्जेक्ट बनाया है। QIcon
प्रदर्शित होने के लिए हमारे आइकन का पथ प्राप्त करता है।
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
एप्लिकेशन और उदाहरण ऑब्जेक्ट बनाए जाते हैं। मुख्य लूप शुरू किया जाता है।
एक टूलटिप दिखा रहा है
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication)
from PyQt5.QtGui import QFont
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
self.setToolTip('This is a <b>QWidget</b> widget')
btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Tooltips')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
विश्लेषण
QToolTip.setFont(QFont('SansSerif', 10))
यह स्थिर विधि टूलटिप्स को रेंडर करने के लिए उपयोग किया जाने वाला फ़ॉन्ट सेट करता है। हम एक 10px SansSerif फ़ॉन्ट का उपयोग करते हैं।
self.setToolTip('This is a <b>QWidget</b> widget')
टूलटिप बनाने के लिए, हम setTooltip()
विधि को कहते हैं। हम समृद्ध पाठ प्रारूपण का उपयोग कर सकते हैं।
btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')
हम एक पुश बटन विजेट बनाते हैं और इसके लिए एक टूलटिप सेट करते हैं।
btn.resize(btn.sizeHint())
btn.move(50, 50)
बटन को आकार दिया जा रहा है और खिड़की पर ले जाया गया है। sizeHint()
विधि बटन के लिए एक अनुशंसित आकार देती है।
अपने प्रोजेक्ट को एक्सक्यूबेबल / इंस्टॉलर में पैकेज करें
cx_Freeze - एक उपकरण आपके प्रोजेक्ट को एक्सक्यूबेबल / इंस्टॉलर में पैकेज कर सकता है
- बाद पिप द्वारा इसे स्थापित, पैकेज
demo.py
, हम की जरूरतsetup.py
नीचे।
import sys
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {
"excludes": ["tkinter"],
"include_files":[('./platforms','./platforms')] # need qwindows.dll for qt5 application
}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "demo",
version = "0.1",
description = "demo",
options = {"build_exe": build_exe_options},
executables = [Executable("demo.py", base=base)])
- फिर निर्माण करें
python .\setup.py build
- फिर दूर
python .\setup.py bdist_msi