# класс формы
def __init__(self):
…
control = QtGui.QPushButton(DEFAULT_UNSET_DATE)
self.connect(control, QtCore.SIGNAL('clicked()'), self.getDate)
…
def getDate(self):
button = self.sender()
date = CalendarDialog.getDate(button)
if date: button.setText(date)
…………………………
#И ещё класс из моего проекта:
##—————————————————————————–
##
class CalendarDialog(QtGui.QDialog):
‘'’
‘'’
def __init__(self, control):
super(CalendarDialog, self).__init__()
#
layout = QtGui.QVBoxLayout(self)
layout.setMargin(3)
self.setWindowFlags(QtCore.Qt.Popup);
self.calendar = QtGui.QCalendarWidget()
layout.addWidget(self.calendar)
button = QtGui.QPushButton(u'OK')
layout.addWidget(button)
#
self.connect(button, QtCore.SIGNAL('clicked()'), self.accept)
#
self.place(control)
##
##
##————————————————————————-
##
def place(self, control):
pos = control.mapToGlobal(control.mapFromParent(control.pos()))
pos.setY(pos.y() + control.height())
pos.setX(pos.x() - 206 + control.width())
self.move(pos)
##
##
##————————————————————————-
## if you want modal dialog, uncomment this
##
#def closeEvent(self, event): event.ignore()
##
##
##————————————————————————-
##
def exec_(self):
if QtGui.QDialog.exec_(self):
return unicode(self.calendar.selectedDate().toString('dd.MM.yyyy'))
##
##
##————————————————————————-
##
@staticmethod
def getDate(control):
dialog = CalendarDialog(control)
#
return dialog.exec_()
##
##
##————————————————————————-
Result: