2017-02-09 1 views
0

파이썬의 GUI에서 QDateEdit 컨트롤을 사용하고 있습니다. 키보드로만 제어하고 싶기 때문에 위로 화살표 키를 누르면 인스턴스에 따라 31-Jan-2000에서 01-feb-2000으로 바뀝니다.파이썬 QDateEdit 증분

현재는 년, 월, 일을 독립적으로 변경하지만 달력으로 변경하여 블록처럼 변경하고 싶습니다.

gif에서 컨트롤의 동작을 볼 수 있었지만 일, 월 및 연도를 독립적으로 변경했지만 "전체 날짜"로 변경할 수는 없었습니다.

미리 감사드립니다.

enter image description here

+0

좋아, 지금까지 한 일을 우리에게 보여 .... – driconmax

+0

가 나는를 넣어 : 그러나, 나는 당신이 수동으로 편집을 제공하기 위해 달력 팝업을 사용 한 후 행 편집 읽기 전용 만들 수도있을 것 같군요 내가 무슨 뜻인지 보여주는 gif. 고맙습니다. – anvelascos

답변

1

stepBy를 재 구현하여 기본 동작을 무시할 수 : 커서 년에 있어야하기 때문에,

class DateEdit(QtGui.QDateEdit):  
    def stepBy(self, steps): 
     self.setDateTime(self.dateTime().addDays(steps)) 

그러나,이 매우 작업 완벽하지 않습니다 섹션을 사용하면 연속적인 증가분을 얻을 수 있습니다. 월 섹션에있는 경우 해당 월의 모든 달/일 동안 증가합니다. 일 섹션에있는 경우 해당 월의 모든 요일에 대해서만 증가합니다. 개인적으로, 나는 이것을 "특징"으로 간주하고, 그것을 구현한다 (구현이 매우 간단하기 때문에).

커서를 연도 섹션에 머무르게 할 수는 있지만 수동 편집을 방해하므로 사용성이 크게 저하됩니다.

class DateEdit(QtGui.QDateEdit): 
    def __init__(self, *args, **kwargs): 
     super(DateEdit, self).__init__(*args, **kwargs) 
     self.setCalendarPopup(True) 
     edit = self.lineEdit() 
     edit.setReadOnly(True) 
     edit.selectionChanged.connect(lambda edit=edit: edit.end(False)) 

    def stepBy(self, steps): 
     self.setDateTime(self.dateTime().addDays(steps))