[PyQt5]高级控件12 - 日历控件QCalendarWidget

PyQt5系列文章

基本控件---
1.按钮QPushButton2.标签QLabel3.可编辑框QTextEdit4.文本提示QToolTip
5.单行输入框QLineEdit6.消息框QMessageBox7.单选按钮QRadioButton8.下拉列表QComboBox
9.图片显示QPixmap10.分组框QGroupBox11.进度条QProgressBar12.对话框QDialog
13.进度条对话框QProgressDialog14.复选框QCheckBox15.滑块QSlider16.状态栏QStatusBar
17.文件对话框QFileDialog18.工具栏QToolBar19.分割条QSplitter20.菜单栏QMenuBar
21.滚动条QScrollBar22.时间编辑框QTimeEdit23.日期编辑框QDateEdit24.时间日期编辑框QDateTimeEdit
高级控件---
1.列表控件QListWidget2.表格控件QTableWidget3.树形控件QTreeWidget4.选项卡QTabWidget
5.浮动窗口QDockWidget6.堆叠窗口QStackedWidget7.堆叠布局QStackedLayout8.网格布局QGridLayout
9.表单布局QFormLayout10.水平布局QHBoxLayout11.垂直布局QVBoxLayout12.日历QCalendarWidget
13.线程QThread14.定时器QTimer--

效果图

QCalendarWidget示例图

完整代码

import sys
from PyQt5.QtWidgets import QCalendarWidget,QLabel,QVBoxLayout,QWidget,QApplication,QMainWindow
from PyQt5.QtCore import QDate

class QCalendarWidgetDemo(QMainWindow):
    def __init__(self):
        super(QCalendarWidgetDemo, self).__init__()

        self.resize(400, 150)
        self.setWindowTitle("QCalendarWidgetDemo")

        calendar = QCalendarWidget(self)
        calendar.setGridVisible(True)
        # 点击日历,传入QDate数据
        calendar.clicked[QDate].connect(self.showDate)

        self.label = QLabel(self)
        date = calendar.selectedDate()
        self.label.setText(date.toString())

        layout = QVBoxLayout()
        layout.addWidget(calendar)
        layout.addWidget(self.label)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

    def showDate(self, date):
        self.label.setText(date.toString())

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QCalendarWidgetDemo()
    main.show()
    sys.exit(app.exec_())

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyQt5中的QCalendarWidget件支持以下事件: 1. selectionChanged:当用户选择日期时触发该事件。 2. activated:当用户双击日期或按Enter键时触发该事件。 3. clicked:当用户单击日期时触发该事件。 4. currentPageChanged:当用户导航到日历的不同页面时触发该事件。 5. customContextMenuRequested:当用户右键单击日历时触发该事件。 您可以使用QCalendarWidget的connect方法将这些事件与自定义槽函数连接起来。例如,以下代码演示了如何将selectionChanged事件与名为handleSelectionChanged的自定义槽函数连接起来: ``` from PyQt5.QtWidgets import QCalendarWidget, QApplication app = QApplication([]) calendar = QCalendarWidget() def handleSelectionChanged(): selected_date = calendar.selectedDate() print("Selected date:", selected_date.toString()) calendar.selectionChanged.connect(handleSelectionChanged) calendar.show() app.exec_() ``` 当用户选择日期时,将调用handleSelectionChanged函数,并输出所选日期。 ### 回答2: 在使用PyQt5中的QCalendarWidget件时,可以通过注册事件来响应其不同的行为。 1. QCalendarWidget的changeDate事件:当用户选择一个日期时,该事件会触发。可以通过重写changeDate()方法来捕捉该事件,然后根据用户选择的日期进行相应的操作,例如更新界面上的其他相关信息。 2. QCalendarWidget的clicked事件:当用户点击某个日期时,该事件会触发。可以通过重写clicked()方法来捕捉该事件,然后根据用户点击的日期进行相应的操作,例如弹出一个消息框显示选中的日期信息。 3. QCalendarWidget的activated事件:当用户选中某个日期并回车确认时,该事件会触发。可以通过重写activated()方法来捕捉该事件,然后根据用户选中的日期进行相应的操作,例如在制台打印选中日期的信息。 4. QCalendarWidget的currentPageChanged事件:当用户切换月份时,该事件会触发。可以通过重写currentPageChanged()方法来捕捉该事件,然后根据用户切换的月份进行相应的操作,例如更新界面上显示的月份信息。 通过捕捉这些事件,我们可以根据用户的操作来动态地进行处理,从而提供更好的用户体验和交互。 ### 回答3: PyQt5的QCalendarWidget是一个日历件,它提供了多种事件可以监听。 1. clicked 事件:当用户点击了日历的某个日期时,会触发该事件。我们可以通过连接到该事件来执行相应的操作,比如在点击日期后更新界面或执行特定的功能。 2. activated 事件:当用户在日历上选中某个日期并确认选择时,会触发该事件。我们可以通过连接到该事件来获取用户所选日期的信息,比如获取选中日期的年、月、日等。 3. selectionChanged 事件:当用户在日历上改变了选择的日期范围时,会触发该事件。我们可以通过连接到该事件来获取选择日期范围的开始日期和结束日期,比如在选择日期范围后更新界面或执行相应操作。 4. currentChanged 事件:当用户在日历上切换了当前显示的月份时,会触发该事件。我们可以通过连接到该事件来获取当前显示的月份的信息,比如获取当前显示月份的年、月等。 5. selectionModeChanged 事件:当用户改变了日历的选择模式时,比如从单选模式切换到多选模式,会触发该事件。我们可以通过连接到该事件来获取选择模式的改变信息,比如获取新的选择模式。 通过连接这些事件,我们可以根据用户的操作做出相应的响应和处理。比如,我们可以根据选择的日期在其他部件中显示相应的信息,或者在选择日期后执行一些计算或逻辑操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值