美文网首页
PyQt5 CalendarWidget(日历控件) 学习

PyQt5 CalendarWidget(日历控件) 学习

作者: _Mirage | 来源:发表于2020-04-04 11:50 被阅读0次

A QCalendarWidget provides a monthly based calendar widget. It allows a user to select a date in a simple and intuitive(直观的) way.

代码:

# coding='utf-8'

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


class Gui(QWidget):
    def __init__(self):
        super(Gui, self).__init__()
        self.start()

    def start(self):
        # 创建垂直布局对象
        vbox = QVBoxLayout(self)
        # 日历组件的构造函数:
        """ QCalendarWidget(parent: QWidget = None) """
        cal = QCalendarWidget(self)
        # 让日历可以看得见(默认就是看得见的),\
        #      但如果你手动设置成False就看不见了
        cal.setVisible(True)
        # 让clicked[QDate]这个信号(设置参数类型QDate)与\
        #       self.show_date这个槽关联
        cal.clicked[QDate].connect(self.show_date)

        # 将日历添加到垂直布局中去
        vbox.addWidget(cal)

        # 标签构造函数:QLabel(parent: QWidget = None,\
        #        flags: Union[Qt.WindowFlags, Qt.WindowType]\
        #             = Qt.WindowFlags())
        self.label = QLabel(self)
        # 得到日历当前选中的值(类型是QDate类型)(初始默认选择当前日期)
        date = cal.selectedDate()
        self.label.setText(date.toString())

        vbox.addWidget(self.label)
        # 将主窗体的默认布局设置成vbox垂直布局
        self.setLayout(vbox)

        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('日历')
        self.show()

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


app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())

运行结果: image.png image.png

相关文章

网友评论

      本文标题:PyQt5 CalendarWidget(日历控件) 学习

      本文链接:https://www.haomeiwen.com/subject/cybdphtx.html