如何在PyQt4日历小部件中为日期着色?

时间:2013-05-12 09:23:12

标签: python user-interface calendar pyqt4

我想在点击它时画出日期。 这是代码: date - 我想要绘制的对象。 希望得到帮助......

class Example(QtGui.QWidget):   
    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):      

        cal = QtGui.QCalendarWidget(self)
        cal.setGridVisible(True)
        cal.clicked[QtCore.QDate].connect(self.showDate)
        self.lbl = QtGui.QLabel(self)
        date = cal.selectedDate()
        self.lbl.setText(date.toString())
        self.lbl.move(130, 150)
        self.setGeometry(50, 50, 500, 400)
        self.setWindowTitle('Calendar')
        self.resize(500,400)    
        self.show()

    def showDate(self, date):     
        self.lbl.setText(date.toString())
        print date
        print str(date.day()) + "/" + str(date.month()) + "/" + str(date.year()

1 个答案:

答案 0 :(得分:0)

我不确定你在这里要做什么,但是因为我自己在zetcode.com上浏览PyQt4的教程,我想我可能会提出一些建议。

您可以通过添加样式表来更改lbl的字体颜色。如果单击日历中的日期,则打印的标签将变为绿色:

def showDate(self, date):
    self.label.setText(date.toString())
    self.label.setStyleSheet('color: green')

如果您想为标签的背景上色,请按照以下方式进行:

def showDate(self, date):
    self.label.setText(date.toString())
    self.label.setStyleSheet('background-color: red')

我刚想到你可能意味着打印而不是 paint 。所以这是一种以样式格式打印日期的方法:

# in your initUI method:
    self.dateLabel = QtGui.QLabel(self)
    date = cal.selectedDate()
    self.dateLabel.setText("{}/{}/{}".format(date.day(),
        date.month(), date.year())) # output: 20/9/2013

# change your showDate method to this:
def showDate(self, date):

    myDateFormat = "{}/{}/{}".format(date.day(), date.month(),
        date.year())
    self.dateLabel.setText(myDateFormat) # output: 1/1/2013
    self.dateLabel.adjustSize()