2009-11-11 54 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。非常可愛的小部件。

相關問題