0
我在Python的GUI中使用QDateEdit控件。我想通過使用鍵盤來控制它,所以當我按下向上箭頭鍵時,它會從31-Jan-2000更改爲01-feb-2000。Python QDateEdit增量
目前,它只是獨立地改變年,月和日,但我想像塊一樣改變它,按日曆日增加。
在gif中,您可以看到控件的行爲,我獨立更改了日,月和年,但我無法將其更改爲「整個日期」。
在此先感謝。
我在Python的GUI中使用QDateEdit控件。我想通過使用鍵盤來控制它,所以當我按下向上箭頭鍵時,它會從31-Jan-2000更改爲01-feb-2000。Python QDateEdit增量
目前,它只是獨立地改變年,月和日,但我想像塊一樣改變它,按日曆日增加。
在gif中,您可以看到控件的行爲,我獨立更改了日,月和年,但我無法將其更改爲「整個日期」。
在此先感謝。
有可能通過重新實現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))
好吧,告訴我們你做了什麼,至今.... – driconmax
我把gif向你展示我的意思。謝謝。 – anvelascos