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() คือโทรมาทันทีเมื่อปฏิทินดูเหมือและอีกครั้งเมื่อควิดเจ็ตเสียการได้รับโฟกัส@label ฉันไม่อยากจะโยงไปที่ 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 inherits จาก QDateTimeEdit ซึ่งอยู่ในหั inherits จาก QAbstractSpinBoxซึ่งมี keyboardTracking ทรัพย์สิน(เปิดใช้งานโดยปริยาย):

ถ้าแป้นพิมพ์ติดตามคือปิดการใช้งานที่ spinbox ไม่ส่งเสีที่ valueChanged()และ textChanged()สัญญาณขณะพิมพ์ มันมันปล่อยสัญญาณทีหลังเมื่อคืนกดปุ่มตอนที่คีย์บอร์ดโฟกัสเป็นเสียงหรือตอนที่อื่น spinbox functionality คือใช้ e.g. อกดปุ่มลูกศรกุญแจ

ต่อไปนี้จะทำให้สิ่งที่คุณต้องการโดยไม่ลังตรวจสอบแบบแสดงเป็นเมนูให้เลือกโฟกัส:

    the_date.setKeyboardTracking(False)

พิจารณาว่านั่นตอนทางแก้ของคุณอาจจะถูกต้อง,มันจะดีกว่าถ้าจะไปดูหน้าต่างผุด dynamically:

    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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่