QDateEdit कैलेंडर के साथ संकेतों editingFinished() जब कैलेंडर पॉपअप क्लिक किया जाता है

0

सवाल

मैं एक QDateEdit कैलेंडर के साथ सक्षम है और कोशिश कर रहा हूँ पर कब्जा करने के लिए अंत के संपादन:

the_date = QDateEdit(...)
<some more initialization>
the_date.setCalendarPopup(True)
the_date.editingFinished.connect(checkDate)
...
def checkDate():
  print ("checkDate called")

अगर मैं तारीख को संपादित करें कीबोर्ड से, checkDate() कहा जाता है जब ध्यान केंद्रित पत्ते विजेट tabbing द्वारा मार, वापस, आदि. लेकिन अगर मैं नीचे तीर पर क्लिक करें मजबूर करता है कि प्रदर्शन के कैलेंडर, checkDate() कहा जाता है जब तुरंत कैलेंडर में प्रकट होता है, और फिर जब विजेट ध्यान केंद्रित खो देता है. मैं नहीं चाहता करने के लिए टाई करने के लिए userDateChanged वजह है कि संकेतों पर हर keystroke संपादन बॉक्स में.

pyqt5 python qdateedit
2021-11-23 23:38:16
2
0

आप कर सकते हैं बचाने के लिए कैलेंडर विजेट से QDateTime और जाँच अगर है कि जहां ध्यान केंद्रित स्थानांतरित कर दिया:

the_date = QDateEdit(...)
<some more initialization>
the_date.setCalendarPopup(True)
calendar = the_date.calendarWidget()
the_date.editingFinished.connect(checkDate)
...
def checkDate():
  if not calendar.hasFocus()
    # do whatever it was you wanted to do when QDateEdit finished editing
2021-11-23 23:38:16
0

QDateEdit से विरासत में मिली QDateTimeEdit, जो बारी में से विरासत में मिली QAbstractSpinBoxहै, जो keyboardTracking संपत्ति (डिफ़ॉल्ट रूप से सक्षम):

अगर कीबोर्ड ट्रैकिंग अक्षम है, के spinbox का उत्सर्जन नहीं करता है valueChanged() और textChanged() संकेत करते हुए टाइपिंग । यह उत्सर्जन करता है के संकेतों के बाद, जब वापस कुंजी दबाया जाता है, जब कुंजीपटल फोकस खो दिया है, या जब अन्य spinbox कार्यक्षमता प्रयोग किया जाता है, उदाहरण के लिए एक तीर कुंजी का उपयोग.

निम्नलिखित प्रदान करेगा तुम क्या जरूरत है, की जाँच के बिना पॉपअप ध्यान केंद्रित:

    the_date.setKeyboardTracking(False)

पर विचार है कि, जबकि अपने समाधान हो सकता है सही है, यह हमेशा बेहतर है की जाँच करने के लिए पॉपअप के लिए गतिशील रूप से:

    if not the_date.calendarWidget().hasFocus():
        # ...
2021-11-24 00:14:48

धन्यवाद, यह महत्वपूर्ण टुकड़ा मैं याद आ रही थी. मुझे लगता है मैं की जरूरत है आगे देखो की विरासत श्रृंखला
Llaves

कहा से पहले पूरी तरह से परीक्षण । QAbtractSpinBox नहीं करता है या तो valueChanged() या textChanged() का संकेत है, तो वे नहीं कर रहे हैं द्वारा विरासत में मिला QDateEdit. उन संकेतों के हैं QSpinBox
Llaves

@Llaves है कि संदर्भ के लिए बस के व्यवहार की व्याख्या spinbox, यह काम करता है के लिए एक ही रास्ता बदल संकेतों के QDateTimeEdit. अंतर यह है कि यह एक और आगे के साथ नियंत्रण (पॉपअप) हो सकता है जो ट्रिगर बदल संकेतों की वजह से ध्यान केंद्रित करने के लिए बदलने के लिए, तो तारीख बदल गया है के बीच में.
musicamante

काटा फिर से विरासत श्रृंखला है, और करने के बारे में सोच सचमुच. मैं के लिए देख रहा था valueChanged या textChanged, मैं याद किया dateChanged में QDateTimeEdit. आपके धैर्य के लिए धन्यवाद.
Llaves

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में