Как поставить картинку на задний фон label
Хочу сделать задний фон в label картинкой, но не знаю как это сделать.
Хотелось бы, чтобы картинка менялась каждый час (вообще не важен промежуток времени, я по аналогии смогу сделать так как я планирую).
В коде есть комментарий - это как раз один из вариантов моей попытки вставить картинку и он не получился.
import sys
import random
from PyQt5.Qt import *
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self._6_10 = [
"Доброе утро",
"Удачного дня",
"Пусть ваш день будет прекрасным",
'Ой, новый день!',
]
self._10_13 = [
"Хорошей работы",
'Здравствуйте',
]
self._13_17 = [
'Вот и пол дня прошло',
]
self._17_21 = [
'Вечер',
'День подходит к концу',
]
self._21_23 = [
'Доброй ночи',
'Спокойной ночи',
'Добрых снов',
]
self._23_2 = [
'Не спиться? Тогда я буду с тобой',
]
self._2_6 = [
'Не спиться? Тогда я буду с тобой',
]
hh_mm = QDateTime.currentDateTime().toString('hh:mm')
if '06:00' <= hh_mm < '10:00':
self.label.setText(random.choice(self._6_10))
elif '10:00' <= hh_mm < '13:00':
self.label.setText(random.choice(self._10_13))
elif '13:00' <= hh_mm < '17:00':
self.label.setText(random.choice(self._13_17))
elif '17:00' <= hh_mm < '21.00':
self.label.setText(random.choice(self._17_21))
elif '21:00' <= hh_mm < '23:30':
self.label.setText(random.choice(self._21_23))
elif '02:00' <= hh_mm < '06:00':
self.label.setText(random.choice(self._2_6))
else:
self.label.setText(random.choice(self._23_2))
def initUI(self):
self.resize(300, 300)
self.label = QLabel(self)
self.label.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
#self.label.setStyleSheet('background-image:url("111.jpg")')
font = QFont()
font.setPointSize(20)
font.setFamily("Century Gothic")
self.label.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
import random
from PyQt5.Qt import *
class Example(QWidget):
def __init__(self):
super().__init__()
self.widget = QWidget(self)
self.widget.setObjectName("widget")
self.initUI()
self._6_10 = [
"Доброе утро",
"Удачного дня",
"Пусть ваш день будет прекрасным",
'Ой, новый день!',
]
self._10_13 = [
"Хорошей работы",
'Здравствуйте',
]
self._13_17 = [
'Вот и пол дня прошло',
]
self._17_21 = [
'Вечер',
'День подходит к концу',
]
self._21_23 = [
'Доброй ночи',
'Спокойной ночи',
'Добрых снов',
]
self._23_2 = [
'Не спиться? Тогда я буду с тобой',
]
self._2_6 = [
'Не спиться? Тогда я буду с тобой',
]
hh_mm = QDateTime.currentDateTime().toString('hh:mm')
if '06:00' <= hh_mm < '10:00':
self.label.setText(random.choice(self._6_10))
elif '10:00' <= hh_mm < '13:00':
self.label.setText(random.choice(self._10_13))
elif '13:00' <= hh_mm < '17:00':
self.label.setText(random.choice(self._13_17))
elif '17:00' <= hh_mm < '21.00':
self.label.setText(random.choice(self._17_21))
elif '21:00' <= hh_mm < '23:30':
self.label.setText(random.choice(self._21_23))
elif '02:00' <= hh_mm < '06:00':
self.label.setText(random.choice(self._2_6))
else:
self.label.setText(random.choice(self._23_2))
def initUI(self):
self.label = QLabel(self)
self.label.setAlignment(Qt.AlignRight | Qt.AlignBottom)
vbox2 = QVBoxLayout(self.widget)
vbox2.addWidget(self.label, alignment=Qt.AlignHCenter | Qt.AlignTop)
vbox = QVBoxLayout(self)
vbox.setContentsMargins(0, 0, 0, 0)
vbox.addWidget(self.widget)
qss = """
#widget {
border-image: url(rio.jpg) 0 0 0 0 ;
}
QLabel {
border-image: url(boy2.jpg) 0 0 0 0 ;
min-width: 605px;
min-height: 150px;
color: red;
font-size:25px;
}
"""
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyleSheet(qss)
ex = Example()
ex.resize(630, 650)
ex.show()
sys.exit(app.exec_())
boy2.jpg
rio.jpg
Автор решения: Александр
→ Ссылка
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
# Отловить ошибки в слотах PyQt5
def log_uncaught_exceptions(ex_cls, ex, tb):
text = '{}: {}:\n'.format(ex_cls.__name__, ex)
import traceback
text += ''.join(traceback.format_tb(tb))
QMessageBox.critical(None, 'Critical error!', text)
quit()
sys.excepthook = log_uncaught_exceptions
class Informer(QWidget):
def __init__(self):
super().__init__()
self.data = {"morning": {"time": "2:57", "image-url": "Images/Morning.jpg"},
"evening": {"time": "2:58", "image-url": "Images/Evening.jpg"}
}
self.resize(800, 600)
self.setWindowTitle("Информер")
self.initUI()
self.timer=QTimer()
self.timer.timeout.connect(self.update_label_image)
self.timer.start(1000)
datetime = QDateTime.currentDateTime()
def initUI(self):
font = QFont()
font.setPointSize(20)
font.setFamily("Century Gothic")
self.label_image = QLabel(self)
self.label_image.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
self.label_image.setFixedSize(self.width(), self.height())
self.label_image.setFont(font)
def update_label_image(self):
time = QTime.currentTime()
#(time.toString('h:m'))
time_now = time.toString('h:m')
if time_now == self.data["morning"]["time"]:
url_image = self.data["morning"]["image-url"]
self.label_image.setStyleSheet(f"background-image: url({url_image});")
elif time_now == self.data["evening"]["time"]:
url_image = self.data["evening"]["image-url"]
self.label_image.setStyleSheet(f"background-image: url({url_image});")
def main():
app = QApplication(sys.argv)
informer = Informer()
informer.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()




