2009-11-11 48 views

回答

1

令人惊讶的是,重写mousePressEvent不适用于QCalendarWidget。它适用于大多数其他小部件。查看QCalendarWidget的文档后,我注意到有一个点击信号。如果你连接它的工作。

import sys 

from PyQt4 import QtGui, QtCore 

class MyCalendar(QtGui.QCalendarWidget): 
    def __init__(self): 
     QtGui.QCalendarWidget.__init__(self) 
     self.connect(self, QtCore.SIGNAL("clicked(QDate)"), self.on_click) 
     self.prev_date = self.selectedDate() 

    def on_click(self, date): 
     if self.should_ignore(date): 
      self.setSelectedDate(self.prev_date) 
      return 
     self.prev_date = date 

    def should_ignore(self, date): 
     """ Do whatever here """ 
     return date.day() > 15 

app = QtGui.QApplication(sys.argv) 
cal = MyCalendar() 
cal.show() 
app.exec_() 

我从来没有签出过QCalendarWidget。非常可爱的小部件。

相关问题