我如何在另一个功能中使用在QDateEdit小部件中设置的用户值?

问题描述 投票:0回答:1

我正在使用PyQT5为运行的某些脚本构建GUI,这需要输入用户日期。

我已经设法达到可以使用DateEdit范围选择日期的位置,并且每次用户更改日期时都会在控制台上打印新日期。

我需要做的是,当我单击运行按钮时,使用函数中QDateEdit小部件中的任何日期。

这是我的示例代码

import sys
from PyQt5 import QtGui
from PyQt5.QtCore import Qt, QDate
from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox,
        QMenu, QPushButton, QRadioButton, QVBoxLayout, QWidget, QFrame, QDateEdit)

class Window(QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.setWindowIcon(QtGui.QIcon('logo.png'))
        self.setWindowTitle("Test")
        self.resize(400, 300)

        grid = QGridLayout()
        grid.addWidget(self.group1(), 0, 0)
        self.setLayout(grid)



    def group1(self):
        groupBox = QGroupBox("Box 1")

        date = QDate.currentDate().addDays(-1)
        dateSelect = QDateEdit()
        dateSelect.setDate(date)
        dateSelect.dateChanged.connect(self.onDateChanged)

        checkbox1 = QCheckBox("Task 1")
        checkbox2 = QCheckBox("Task 2")
        checkbox3 = QCheckBox("Task 3")

        button1 = QPushButton('Run')
        button1.setMaximumWidth(75)
        button1.clicked.connect(self.btn1_onClicked)

        button2 = QPushButton('Run')
        button2.setMaximumWidth(75)

        separatorLine = QFrame()
        separatorLine.setFrameShape(QFrame.HLine)
        separatorLine.setFrameShadow(QFrame.Sunken)

        vbox = QVBoxLayout()
        vbox.addWidget(dateSelect)
        vbox.addWidget(checkbox1)
        vbox.addWidget(checkbox2)
        vbox.addWidget(button1)
        vbox.addWidget(separatorLine)
        vbox.addWidget(checkbox3)
        vbox.addWidget(button2)
        vbox.addStretch(1)
        groupBox.setLayout(vbox)

        return groupBox


    def btn1_onClicked(self, ):
        date = onDateChanged()


    def onDateChanged(self,newDate):
        date = newDate.toString('yyyy-MM-dd')
        print(date)
        return date


if __name__ == '__main__':
    app = QApplication(sys.argv)
    clock = Window()
    clock.show()
    sys.exit(app.exec_())
python python-3.x pyqt pyqt5 qdateedit
1个回答
0
投票

[QDateEdit通过QDateEdit信号通知日期更改,但是在您的情况下,您不希望通知而是当前日期,为此您必须使用dateChanged方法。

dateChanged
© www.soinside.com 2019 - 2024. All rights reserved.