Я не могу правильно получить значение из QCalendarWidget () - PullRequest
1 голос
/ 31 марта 2019

Я делаю приложение на основе календаря с Python.Для этого я использую QCalendarWidget () из PyQt5.Тем не менее, я не могу получить выбранную дату должным образом.Когда я запускаю приведенный ниже код, в какой бы день я ни щелкнул, он просто печатает сегодняшний день как 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())

1 Ответ

1 голос
/ 31 марта 2019

Что ты печатаешь?Вы печатаете переменную date , и в какой момент вы присваиваете значение переменной date ?затем в начале, а затем никогда не обновляется, поэтому значение 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...