'Displaying a standard icon and text in QLabel
I want to display a standard warning icon along with some description text in QLabel in pyqt. Qlabel doesn't have setIcon function. So how could I do that?
Any help would be appreciated.
Solution 1:[1]
QLabel doesn't have a setIcon method, but it has setPixmap. But if you use that to set a QPixmap it overrides your text. but there are a few possibilities to achieve what you want:
- use the html-capabilities of the
QLabelto display text+image - use two labels, one with the text and one with the image
- paint the component yourself
Solution 2:[2]
I know I'm a bit late to the party, but here's my solution to this problem:
import qtawesome as qta
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class IconLabel(QWidget):
IconSize = QSize(16, 16)
HorizontalSpacing = 2
def __init__(self, qta_id, text, final_stretch=True):
super(QWidget, self).__init__()
layout = QHBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(layout)
icon = QLabel()
icon.setPixmap(qta.icon(qta_id).pixmap(self.IconSize))
layout.addWidget(icon)
layout.addSpacing(self.HorizontalSpacing)
layout.addWidget(QLabel(text))
if final_stretch:
layout.addStretch()
I am using QtAwesome to get the desired icon.
Now you can easily insert the icon label into your own PyQt5 layout. Example.
mylayout.addWidget(IconLabel("fa.scissors", "Slicer Limit:"))
What it looks like:
Note that I included an option final_stretch. In a vertical layout, you'll want to keep final_stretch = True for proper left-alignment (see image avove). In a horizontal layout (i.e., when placing multiple IconLabels next to each other in the same row), however, you'll probably want to set final_stretch = False in order to save space.
Solution 3:[3]
Try this, I hope this will work fine`install qtawesome using the following command:
pip install qtawesome
you can use any kind of icon from qtawesome.
`
import qtawesome as qta
icon = qta.icon("fa.lock",color='blue')
self.ssl_label.setPixmap(icon.pixmap(QSize(16,16)))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | mata |
| Solution 2 | |
| Solution 3 | Jawad Hussain Shah |

