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() 라고 할 때 초점을 둡 위젯으로 탭을 타격,반품,등등. 하지만 클릭 하는 경우에는 아래 화살표가 힘의 디스플레이 달력 checkDate() 라면 즉시 달력이 나타나고 다시면 위젯을 잃게 초점이다. 나는 원하지 않는 넥타이를 userDateChanged 기 때문에 그 신호에 각 키스트로크에서 편집 상자입니다.

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 에서 상속되 QAbstractSpinBoxkeyboardTracking 산(기본적으로 사용 가능):

는 경우 키보드 추적 기능을 사용하지 않도록 설정한 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

물리에 의해 다시 상속 체인,및 생각하고 말 그대로 있습니다. 내가 찾던 valueChangedtextChanged나중 dateChangedQDateTimeEdit. 기다려 주셔서 감사합니다.
Llaves

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................