es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo la fecha con el calendario de PyQt 5

Tengo un problema. Quiero obtener una fecha seleccionada en el formato 2021-12-12 del calendario de PyQt.
Puedo imprimir la variable date (comentada) en la función get_date pero no pude acceder a esta variable desde fuera.
Así que creé la variable time y quería sobrescribir la variable a través de la función, pero cuando intento imprimir time después del código obtengo “None”.

¿Tienes alguna recomendación?

“`import datetime
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
import sys

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Datumsauswahl")
cal = QtWidgets.QCalendarWidget(gridVisible=True)
lay = QtWidgets.QVBoxLayout(window)
lay.addWidget(cal)
time = datetime.datetime.now()
@QtCore.pyqtSlot(QtCore.QDate)
def get_date(date): # <— parámetro date
date = date.toString(Qt.ISODate)
#print(date)
time = date

time = get_date(date)

time = cal.clicked.connect(get_date)
window.show()
print(time)
sys.exit(app.exec())
print(time)“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una recomendación sería utilizar variables globales en lugar de definir la variable dentro de la función. De esta manera, la variable se puede acceder desde cualquier lugar en el código. Aquí tienes un ejemplo:

    “`import datetime
    from PyQt5 import QtCore, QtWidgets
    from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
    import sys

    app = QtWidgets.QApplication(sys.argv)
    window = QtWidgets.QWidget()
    window.setWindowTitle(“Datumsauswahl”)
    cal = QtWidgets.QCalendarWidget(gridVisible=True)
    lay = QtWidgets.QVBoxLayout(window)
    lay.addWidget(cal)
    selected_date = “”

    @QtCore.pyqtSlot(QtCore.QDate)
    def get_date(date): # <— parámetro de fecha
    global selected_date
    selected_date = date.toString(Qt.ISODate)

    cal.clicked.connect(get_date)
    window.show()
    sys.exit(app.exec())
    print(selected_date)
    “`

    De esta manera, la fecha seleccionada se puede acceder fuera de la función como la variable global selected_date. Solo asegúrate de definirla antes de la función y marcarla como global dentro de la función.

Comments are closed.