我无法正确地从QCalendarWidget()获取值

2024-09-26 18:00:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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())

Tags: 代码fromimportapp应用程序getdatesys
1条回答
网友
1楼 · 发布于 2024-09-26 18:00:26

你在打印什么?您是否正在打印变量日期,以及何时为变量日期赋值?然后在开始的时候,它永远不会被更新,所以date的值就是QCalendarWidget在今天开始时所取的值。解决方案是使用携带信号的信息,插槽必须有date参数

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())

相关问题 更多 >

    热门问题