【问题标题】:Rounding a QLabel's corners in PyQt5 [duplicate]在 PyQt5 中舍入 QLabel 的角 [重复]
【发布时间】:2020-12-18 17:14:41
【问题描述】:

我有一个显示矩形图像的 QLabel。图片的四角应该剪成圆形。

我使用 PyQt5,但不知道该怎么做。我试图设置一个画家并绘制一个圆形矩形,但它显示在我的图像之上。 我需要一些帮助。

【问题讨论】:

    标签: python pyqt pyqt5 qlabel


    【解决方案1】:

    这是执行此操作的一种方法。这是通过使用原始像素图作为画家的画笔在最初透明的像素图上绘制圆角矩形来实现的。

    label = QtWidgets.QLabel()
    
    # original
    pixmap = QtGui.QPixmap('example.jpg')
    radius = 30
    
    # create empty pixmap of same size as original 
    rounded = QtGui.QPixmap(pixmap.size())
    rounded.fill(QtGui.QColor("transparent"))
    
    # draw rounded rect on new pixmap using original pixmap as brush
    painter = QtGui.QPainter(rounded)
    painter.setRenderHint(QtGui.QPainter.Antialiasing)
    painter.setBrush(QtGui.QBrush(pixmap))
    painter.setPen(QtCore.Qt.NoPen)
    painter.drawRoundedRect(pixmap.rect(), radius, radius)
    
    # set pixmap of label
    label.setPixmap(rounded)
    

    【讨论】:

      【解决方案2】:

      这是一个使用 Qt 样式表在 QLabel 中显示圆形图像的示例。

      from PyQt5.QtWidgets import QApplication, QLabel                                                                                       
                                                                                                                                             
      app = QApplication([])                                                                                                                 
      
      label=QLabel("\n\                                                                                                                      
        QLable StyleSheet Demo \n\                                                                                                           
        QLable StyleSheet Demo \n\                                                                                                           
        QLable StyleSheet Demo \n\                                                                                                           
        QLable StyleSheet Demo \n\                                                                                                           
        QLable StyleSheet Demo \n\                                                                                                           
        QLable StyleSheet Demo \n\                                                                                                           
        ")                                                                                                                                   
      label.setStyleSheet(" \                                                                                                                
        border-image: url('demo.jpg'); \                                                                                                     
        background-color: black; \                                                                                                           
        border-radius: 50%; \                                                                                                                
        ")                                                                                                                                   
      label.setMargin(20);                                                                                                                   
      label.setScaledContents(True);                                                                                                         
      label.show()                                                                                                                           
      app.exec_()                                                                                                                            
      

      这是它的样子:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        相关资源
        最近更新 更多