Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在另一个函数中使用in-QDateEdit小部件中设置的用户值?_Python_Python 3.x_Pyqt_Pyqt5_Qdateedit - Fatal编程技术网

Python 如何在另一个函数中使用in-QDateEdit小部件中设置的用户值?

Python 如何在另一个函数中使用in-QDateEdit小部件中设置的用户值?,python,python-3.x,pyqt,pyqt5,qdateedit,Python,Python 3.x,Pyqt,Pyqt5,Qdateedit,我正在为我运行的一些脚本使用PyQT5构建GUI,这些脚本需要用户日期输入 我已经成功地使用DateEdit范围选择了一个日期,并在每次用户更改时将新日期打印到控制台 我需要做的是,当我单击Run按钮时,在函数中使用QDateEdit小部件中的任何日期 这是我的示例代码 import sys from PyQt5 import QtGui from PyQt5.QtCore import Qt, QDate from PyQt5.QtWidgets import (QApplication, Q

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

我已经成功地使用DateEdit范围选择了一个日期,并在每次用户更改时将新日期打印到控制台

我需要做的是,当我单击Run按钮时,在函数中使用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_())
通过信号通知日期的更改,但在您的情况下,您不希望收到通知,而是希望收到当前日期,为此,您必须使用该方法

导入系统 从PyQt5.QtCore导入Qt,QDate 从PyQt5.QtGui导入QIcon 从PyQt5.QtWidgets导入( QApplication, QCheckBox, QGridLayout, QGroupBox, QPushButton, QVBoxLayout, QWidget, QFrame, QDateEdit, ) 类窗口(QWidget): def uuu init uuu(self,parent=None): 超级(窗口,自我)。\uuuuu初始化\uuuuuuu(父级) self.setWindowIcon(QIcon(“logo.png”)) self.setWindowTitle(“测试”) 自我调整大小(400300) grid=QGridLayout(自) grid.addWidget(self.group1(),0,0) def组1(自身): groupBox=QGroupBox(“框1”) date=QDate.currentDate().addDays(-1) self.dateSelect=QDateEdit() self.dateSelect.setDate(日期) self.dateSelect.dateChanged.connect(self.onDateChanged) 复选框1=QCheckBox(“任务1”) checkbox2=QCheckBox(“任务2”) checkbox3=QCheckBox(“任务3”) button1=QPushButton(“运行”) 按钮1.设置最大宽度(75) 按钮1。点击。连接(self.btn1\u点击) button2=QPushButton(“运行”) 按钮2.设置最大宽度(75) separatorLine=QFrame(frameShape=QFrame.HLine,frameShadow=QFrame.Unken) vbox=QVBoxLayout() vbox.addWidget(self.dateSelect) vbox.addWidget(复选框1) vbox.addWidget(复选框2) vbox.addWidget(按钮1) vbox.addWidget(分隔线) vbox.addWidget(复选框3) vbox.addWidget(按钮2) vbox.addStretch(1) groupBox.setLayout(vbox) 返回分组框 def btn1_onClicked(自),如下所示: 打印(self.dateSelect.date().toString(“yyyy-MM-dd”)) 定义onDateChanged(self,newDate): 日期=newDate.toString(“yyyy-MM-dd”) 打印(日期) 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) 时钟=窗口() 时钟显示 sys.exit(app.exec_())
非常感谢!这很有帮助。