Я создаю GUI, используя PyQT5 для некоторых скриптов, которые я запускаю, и которые требуют ввода даты пользователем.
Мне удалось добраться до точки, где я могу выбрать дату, используя диапазон 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_())