我正在使用Python制作基于日历的应用程序。为此,我正在使用PyQt5的QCalendarWidget()。但是,我无法正确获取所选日期。当我运行下面的代码时,无论哪一天我点击它,它只是打印今天像PyQt5.QtCore.QDate(2019, 3, 30)
。我想要的是获得所选日期。我怎么解决这个问题?
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(50,50,310,300)
window.setWindowTitle("Reminder")
cal = QCalendarWidget(window)
cal.setGridVisible(True)
date = cal.selectedDate()
def get_date():
print(date)
cal.clicked[QDate].connect(get_date)
window.show()
sys.exit(app.exec())
你在打印什么?你打印变量日期,在什么时候为变量日期赋值?然后在开头,然后它永远不会更新,所以date的值是QCalendarWidget在今天开始时所采用的值。解决方案是使用携带信号的信息,您的插槽必须具有日期参数
from PyQt5 import QtCore, QtWidgets
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Reminder")
cal = QtWidgets.QCalendarWidget(gridVisible=True)
lay = QtWidgets.QVBoxLayout(window)
lay.addWidget(cal)
@QtCore.pyqtSlot(QtCore.QDate)
def get_date(date): # <--- date parameter
print(date)
cal.clicked.connect(get_date)
window.show()
sys.exit(app.exec())