MyTetra Share
Делитесь знаниями!
Программа "Определитель дней" (PyQt)
14.01.2018
18:38
Раздел: Python - Перевод документации Python 3.x

Программа "Определитель дней" (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)

 
MyTetra Share v.0.52
Яндекс индекс цитирования