📜  PyQt5 QCalendarWidget – 如果可能,访问每个孩子的矩形

📅  最后修改于: 2022-05-13 01:55:35.274000             🧑  作者: Mango

PyQt5 QCalendarWidget – 如果可能,访问每个孩子的矩形

在本文中,我们将看到如何获得 QCalendarWidget 的所有孩子的矩形。日历不仅仅是一个单一的小部件,它是许多较小的小部件的混合物,我们称之为日历的孩子。有很多子项,例如表格视图、项目委托等,我们使用 children 方法获取它的所有子项。矩形是每个孩子的边界矩形。
注意:所有孩子都没有矩形,因为它们可以是布局。

下面是实现

Python3
# importing libraries
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
 
 
class Window(QMainWindow):
 
    def __init__(self):
        super().__init__()
 
        # setting title
        self.setWindowTitle("Python ")
 
        # setting geometry
        self.setGeometry(100, 100, 650, 400)
 
        # calling method
        self.UiComponents()
 
        # showing all the widgets
        self.show()
 
    # method for components
    def UiComponents(self):
 
        # creating a QCalendarWidget object
        self.calendar = QCalendarWidget(self)
 
        # setting geometry to the calendar
        self.calendar.setGeometry(50, 10, 400, 250)
 
        # creating a label
        label = QLabel(self)
 
        # setting geometry
        label.setGeometry(50, 280, 420, 120)
 
        # making it multi line
        label.setWordWrap(True)
 
        # getting children
        children = self.calendar.children()
 
 
        value = []
        for i in children:
            try:
                 
                try:
                    # getting children rectangle
                    rect = i.childrenRect()
                except:
                    # getting rectangle
                    rect = i.rect()
                     
                # adding it to list
                value.append(rect)
 
            except:
                pass
 
        # setting text to the label
        label.setText("Rectangles : " + str(value))
 
 
 
# create pyqt5 app
App = QApplication(sys.argv)
 
# create the instance of our Window
window = Window()
 
 
# start the app
sys.exit(App.exec())


输出 :