Python 如何在另一个函数中使用in-QDateEdit小部件中设置的用户值?
我正在为我运行的一些脚本使用PyQT5构建GUI,这些脚本需要用户日期输入 我已经成功地使用DateEdit范围选择了一个日期,并在每次用户更改时将新日期打印到控制台 我需要做的是,当我单击Run按钮时,在函数中使用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
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_())
非常感谢!这很有帮助。