"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Lambda अभिव्यक्तियों और Pyqt स्लॉट कार्यों का उपयोग करने से अप्रत्याशित व्यवहार क्यों होता है?

Lambda अभिव्यक्तियों और Pyqt स्लॉट कार्यों का उपयोग करने से अप्रत्याशित व्यवहार क्यों होता है?

2025-04-16 को पोस्ट किया गया
ब्राउज़ करें:452

] हालाँकि, कुछ परिदृश्यों में लैम्ब्डा अभिव्यक्तियों का उपयोग करने से अप्रत्याशित व्यवहार हो सकता है। def __init __ (स्व): ... self.buttons = [] IDX के लिए [3, 4] में: बटन = qtgui.qpushbutton ('बटन {} auto'.format (idx), स्व) button.clicked.connect (lambda x = idx: self.button_pushed (x)) self.buttons.append (बटन) main_layout.addwidget (बटन)

Why Does Using Lambda Expressions With PyQt Slots Lead to Unexpected Behavior? 
जब बटन क्लिक किए जाते हैं, तो 3 और 4 के अपेक्षित मान प्राप्त करने के बजाय, बटन_पश विधि को गलत प्राप्त होता है। स्लॉट में एक लैम्ब्डा अभिव्यक्ति का उपयोग करते समय, असाइन किए गए मान (जैसे कि इस मामले में x = idx) को उत्सर्जित तर्क द्वारा अधिलेखित किया जाता है। self.button_pushed (x))

यह संशोधन यह सुनिश्चित करता है कि सही मान बटन की स्थिति की परवाह किए बिना बटन_पश विधि को पारित कर दिया गया है। स्लॉट कनेक्शन के संदर्भ में, सिग्नल की आग लगने पर लैम्ब्डा फ़ंक्शन का मूल्यांकन नहीं किया जाता है। इसके बजाय, फ़ंक्शन के लिए एक सूचक (प्रतिस्थापित मापदंडों के साथ) सिग्नल से जुड़ा हुआ है। जब सिग्नल उत्सर्जित होता है, तो कनेक्टेड फ़ंक्शन को उन तर्कों के साथ कहा जाता है जो सिग्नल गुजरता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3