2017-02-09 67 views
0

我在Python的GUI中使用QDateEdit控件。我想通過使用鍵盤來控制它,所以當我按下向上箭頭鍵時,它會從31-Jan-2000更改爲01-feb-2000。Python 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))