在PyQt中使用QCalendarWidget选择日期范围

1 投票
2 回答
6725 浏览
提问于 2025-04-17 06:03

我正在使用 QCalendarWidget 这个工具,在 PyQt 中让用户从弹出的日历中选择一个日期。我希望用户能够选择一段日期,比如从11月12日到11月17日,而不仅仅是选择11月12日这一天。

QCalendarWidget 的文档提到有 NoSelection(不选择)和 SingleSelection(单选)这两种选择方式。那么,我该如何实现多选呢?

这是我现在的代码:

def selectDates(self):
    self.dateWindow = QWidget()
    self.cal = QCalendarWidget(self)
    self.cal.clicked[QtCore.QDate].connect(self.showDate)
    self.hbox = QHBoxLayout()
    self.hbox.addWidget(self.cal)
    self.dateWindow.setLayout(self.hbox)
    self.dateWindow.setGeometry(300, 300, 350, 300)
    self.dateWindow.setWindowTitle('Calendar')

    self.dateWindow.show()

def showDate(self):
    print "Date picked: ", self.cal.selectedDate()

2 个回答

1

虽然这是一篇很老的帖子,但我还是想分享一下我是怎么解决这个问题的。
我使用了两个 DateEdits,一个是用来选择开始日期(fromDate),另一个是用来选择结束日期(toDate)。如果你想让你的 DateEdits 有一个日历弹出效果,可以把 calendarPopUp 这个参数设置为 True

0

我觉得这可能不太行。
我相信你已经考虑过添加两个日历小部件或者日期编辑小部件(一个用来选择范围的开始日期,一个用来选择结束日期)。
不过,除非你觉得自己能开发一个重写的类,否则真的应该考虑一下这个可能性。

撰写回答