Программа "Определитель дней" (PyQt)
Программа позволяет
- вычислять количество дней между двумя произвольными датами,
- определять, какая будет дата через введенное количество дней от любой даты.
from PyQt4 import QtGui, QtCore
import sys
import datetime
def radio_change():
if radio1.isChecked():
l3.hide()
qty.hide()
l2.show()
date2.show()
elif radio2.isChecked():
l2.hide()
date2.hide()
l3.show()
qty.show()
def date_days():
if radio1.isChecked():
a = date1.date() # type: <class 'PyQt4.QtCore.QDate'>
a = a.toPyDate() # type: <class 'datetime.date'>
b = date2.date()
b = b.toPyDate()
c = a-b
c = str(c)
if c[0] == '-': c = c[1:]
edit_out.setText(c.split()[0])
elif radio2.isChecked():
a = date1.date()
a = a.toPyDate()
b = qty.value()
b = datetime.timedelta(days=b)
c = a+b
c = str(c)
edit_out.setText(c)
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.setWindowTitle('Вычислитель дат и дней')
radio1 = QtGui.QRadioButton("Количество дней между датами")
radio2 = QtGui.QRadioButton("Дату через количество дней от установленной даты")
vbox = QtGui.QVBoxLayout()
vbox.addWidget(radio1)
vbox.addWidget(radio2)
box = QtGui.QGroupBox("Определить",widget)
box.setLayout(vbox)
box.setGeometry(10,10,450,80)
radio1.setChecked(True)
QtCore.QObject.connect(radio1,QtCore.SIGNAL("clicked()"),radio_change)
QtCore.QObject.connect(radio2,QtCore.SIGNAL("clicked()"),radio_change)
a = datetime.date.today()
l1 = QtGui.QLabel('<p align="right">Дата 1:</p>',widget)
date1 = QtGui.QDateEdit(a,widget)
l1.setGeometry(30,120,50,30)
date1.setGeometry(90,120,100,30)
date1.setDisplayFormat("yyyy-MM-dd")
date1.setDateRange(datetime.date(1,1,1),datetime.date(3000,1,1))
l2 = QtGui.QLabel('<p align="right">Дата 2:</p>',widget)
date2 = QtGui.QDateEdit(a,widget)
l2.setGeometry(30,150,50,30)
date2.setGeometry(90,150,100,30)
date2.setDisplayFormat("yyyy-MM-dd")
date1.setDateRange(datetime.date(1,1,1),datetime.date(3000,1,1))
l3 = QtGui.QLabel('<p align="right">Дни:</p>',widget)
qty = QtGui.QSpinBox(widget) # only integer
qty.setRange(-1000000,1000000)
l3.setGeometry(30,150,50,30)
qty.setGeometry(90,155,80,25)
l3.hide()
qty.hide()
button = QtGui.QPushButton("&Найти",widget)
button.setGeometry(20,190,60,30)
QtCore.QObject.connect(button,QtCore.SIGNAL("clicked()"),date_days)
edit_out = QtGui.QLineEdit(widget)
edit_out.setGeometry(90,190,90,30)
edit_out.setReadOnly(True) # but can do copy
edit_out.setFrame(False)
edit_out.setAlignment(QtCore.Qt.AlignCenter)
h = QtGui.QLabel('<p style="background-color:#eeeeee;"><center>\
<br> Поля можно править вручную. <br>\
Чтобы узнать дату<br>\
в прошлое от текущей надо<br>\
ввести отрицательное число.<br></center></p>', widget)
h.setGeometry(200,90,250,150)
widget.show()
sys.exit(app.exec_())
Создано
2013-01-25
- Вычисление количества дней между датами и определение дат
Перекрёстные ссылки книги для Программа "Определитель дней" (PyQt)
- Вычисление количества дней между датами и определение дат