2018-01-30 16:01:55 +08:00
|
|
|
|
'''
|
|
|
|
|
Created on 2018年1月30日
|
|
|
|
|
@author: Irony."[讽刺]
|
|
|
|
|
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
|
|
|
|
@email: 892768447@qq.com
|
|
|
|
|
@file: CalendarWidget
|
2018-01-30 16:07:39 +08:00
|
|
|
|
@description: 日历
|
2018-01-30 16:01:55 +08:00
|
|
|
|
'''
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QApplication, QCalendarWidget
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StyleSheet = '''
|
|
|
|
|
/*顶部导航区域*/
|
|
|
|
|
#qt_calendar_navigationbar {
|
|
|
|
|
background-color: rgb(0, 188, 212);
|
|
|
|
|
min-height: 100px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*上一个月按钮和下一个月按钮(从源码里找到的objectName)*/
|
|
|
|
|
#qt_calendar_prevmonth, #qt_calendar_nextmonth {
|
|
|
|
|
border: none; /*去掉边框*/
|
|
|
|
|
margin-top: 64px;
|
|
|
|
|
color: white;
|
|
|
|
|
min-width: 36px;
|
|
|
|
|
max-width: 36px;
|
|
|
|
|
min-height: 36px;
|
|
|
|
|
max-height: 36px;
|
|
|
|
|
border-radius: 18px; /*看来近似椭圆*/
|
|
|
|
|
font-weight: bold; /*字体加粗*/
|
|
|
|
|
qproperty-icon: none; /*去掉默认的方向键图片,当然也可以自定义*/
|
|
|
|
|
background-color: transparent;/*背景颜色透明*/
|
|
|
|
|
}
|
|
|
|
|
#qt_calendar_prevmonth {
|
|
|
|
|
qproperty-text: "<"; /*修改按钮的文字*/
|
|
|
|
|
}
|
|
|
|
|
#qt_calendar_nextmonth {
|
|
|
|
|
qproperty-text: ">";
|
|
|
|
|
}
|
|
|
|
|
#qt_calendar_prevmonth:hover, #qt_calendar_nextmonth:hover {
|
|
|
|
|
background-color: rgba(225, 225, 225, 100);
|
|
|
|
|
}
|
|
|
|
|
#qt_calendar_prevmonth:pressed, #qt_calendar_nextmonth:pressed {
|
|
|
|
|
background-color: rgba(235, 235, 235, 100);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*年,月控件*/
|
|
|
|
|
#qt_calendar_yearbutton, #qt_calendar_monthbutton {
|
|
|
|
|
color: white;
|
|
|
|
|
margin: 18px;
|
|
|
|
|
min-width: 60px;
|
|
|
|
|
border-radius: 30px;
|
|
|
|
|
}
|
|
|
|
|
#qt_calendar_yearbutton:hover, #qt_calendar_monthbutton:hover {
|
|
|
|
|
background-color: rgba(225, 225, 225, 100);
|
|
|
|
|
}
|
|
|
|
|
#qt_calendar_yearbutton:pressed, #qt_calendar_monthbutton:pressed {
|
|
|
|
|
background-color: rgba(235, 235, 235, 100);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2018-01-30 19:36:18 +08:00
|
|
|
|
/*年份输入框*/
|
|
|
|
|
#qt_calendar_yearedit {
|
2018-01-30 16:01:55 +08:00
|
|
|
|
min-width: 50px;
|
|
|
|
|
color: white;
|
|
|
|
|
background: transparent;/*让输入框背景透明*/
|
|
|
|
|
}
|
2018-01-30 19:36:18 +08:00
|
|
|
|
#qt_calendar_yearedit::up-button { /*往上的按钮*/
|
2018-01-30 16:01:55 +08:00
|
|
|
|
width: 20px;
|
|
|
|
|
subcontrol-position: right;/*移动到右边*/
|
|
|
|
|
}
|
2018-01-30 19:36:18 +08:00
|
|
|
|
#qt_calendar_yearedit::down-button { /*往下的按钮*/
|
2018-01-30 16:01:55 +08:00
|
|
|
|
width: 20px;
|
|
|
|
|
subcontrol-position: left; /*移动到左边去*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*月份选择菜单*/
|
|
|
|
|
CalendarWidget QToolButton QMenu {
|
|
|
|
|
background-color: white;
|
|
|
|
|
}
|
|
|
|
|
CalendarWidget QToolButton QMenu::item {
|
|
|
|
|
padding: 10px;
|
|
|
|
|
}
|
|
|
|
|
CalendarWidget QToolButton QMenu::item:selected:enabled {
|
|
|
|
|
background-color: rgb(230, 230, 230);
|
|
|
|
|
}
|
|
|
|
|
CalendarWidget QToolButton::menu-indicator {
|
|
|
|
|
/*image: none;去掉月份选择下面的小箭头*/
|
|
|
|
|
subcontrol-position: right center;/*右边居中*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*下方的日历表格*/
|
|
|
|
|
#qt_calendar_calendarview {
|
|
|
|
|
outline: 0px;/*去掉选中后的虚线框*/
|
|
|
|
|
selection-background-color: rgb(0, 188, 212); /*选中背景颜色*/
|
|
|
|
|
}
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CalendarWidget(QCalendarWidget):
|
|
|
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
super(CalendarWidget, self).__init__(*args, **kwargs)
|
|
|
|
|
# 隐藏左边的序号
|
|
|
|
|
self.setVerticalHeaderFormat(self.NoVerticalHeader)
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
app = QApplication(sys.argv)
|
|
|
|
|
app.setStyleSheet(StyleSheet)
|
|
|
|
|
w = CalendarWidget()
|
|
|
|
|
w.show()
|
|
|
|
|
sys.exit(app.exec_())
|