Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
5 / 3 / 3
Регистрация: 21.05.2022
Сообщений: 49
1
PyQt5

Label с прозрачным bg

09.04.2024, 10:25. Показов 982. Ответов 12

Author24 — интернет-сервис помощи студентам
В данный момент Labal отображает текст, но вырезает участок видео.
Нужно вывести просто текст без background

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import sys
import vlc
from PyQt5 import QtCore, QtGui, QtWidgets, Qt
from PyQt5.QtWidgets import QLabel
class Player(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(Player, self).__init__(parent)
        self.setWindowTitle("Media Player")
        # creating a basic vlc instance
        self.instance = vlc.Instance('--no-xlib --quiet')
        self.mediaplayer = self.instance.media_player_new()
        ##########video frame
        self.videoframe = QtWidgets.QFrame(frameShape=QtWidgets.QFrame.Box, frameShadow=QtWidgets.QFrame.Raised)
        self.setStyleSheet("background-color: yellow;")
 
        if sys.platform.startswith("linux"):  # for Linux using the X Server
            self.mediaplayer.set_xwindow(self.videoframe.winId())
        elif sys.platform == "win32":  # for Windows
            self.mediaplayer.set_hwnd(self.videoframe.winId())
        elif sys.platform == "darwin":  # for MacOS
            self.mediaplayer.set_nsobject(self.videoframe.winId())
 
        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)
        lay = QtWidgets.QVBoxLayout(central_widget)
        lay.addWidget(self.videoframe)
 
        filename = "bmw_111.mp4"
        media = self.instance.media_new(filename)
        self.mediaplayer.set_media(media)
        self.mediaplayer.play()
 
        # ==============================================================================
        self.label = QLabel('Убрать Background у Labal', self)
        self.label.move(150, 150)
        # ==============================================================================
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    player = Player()
    player.show()
    player.resize(640, 480)
    sys.exit(app.exec_())
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2024, 10:25
Ответы с готовыми решениями:

ProgressBar. Отображение % выполнения на label - как сделать фон label прозрачным?
Есть прогрессбар, есть лэйбл, на котором отображается ход выполнения. Лэйбл помещена на...

BackGroundImage с прозрачным label
Как сделать картинку на заднем фоне, при этом label прозрачный. Я сделал но, форма открывается с...

Label с прозрачным фоном
В общем, в теме уже всё сказано. Как сделать у System.Windows.Forms.Label прозрачный фон и возможно...

Как сделать Label прозрачным
Запутался в меню параметров(

12
5 / 3 / 3
Регистрация: 21.05.2022
Сообщений: 49
09.04.2024, 10:33  [ТС] 2
В данный момент код отрабатывает так:
[ATTACH]
VB.NET
1
1468060
[/ATTACH]
Миниатюры
Label с прозрачным bg  
0
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
09.04.2024, 18:41 3
Универсального решения-то нет. Под Linux скорее всего поможет это:
Python
1
2
3
4
5
6
7
        # ==============================================================================
        self.label = QLabel('Убрать Background у Labal', self)
        self.label.setAttribute(QtCore.Qt.WA_NoSystemBackground)
        self.label.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.label.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
        self.label.move(150, 150)
        # ==============================================================================
Но под Windows это не работает, про остальные не знаю...
0
5 / 3 / 3
Регистрация: 21.05.2022
Сообщений: 49
09.04.2024, 21:26  [ТС] 4
Почему то в библиотеке QT нет Attribute - WA_NoSystemBackground, WA_TranslucentBackground
Я уже пару недель на данном форуме. Форум в виде помощи - мертвый. Максимум чем могут помочь это какие то мелочи, которые можно решить с помощью GPT.
0
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
10.04.2024, 08:13 5
Цитата Сообщение от cosmos44 Посмотреть сообщение
Почему то в библиотеке QT нет Attribute - WA_NoSystemBackground, WA_TranslucentBackground
все в Qt есть
https://doc.qt.io/qtforpython-... tAttribute

Добавлено через 3 минуты
Цитата Сообщение от cosmos44 Посмотреть сообщение
Я уже пару недель на данном форуме. Форум в виде помощи - мертвый. Максимум чем могут помочь это какие то мелочи, которые можно решить с помощью GPT.

Не по теме:

неинтересна тема никому, вот и молчат все. я лично с vlc не работал и сказать мне нечего

0
5 / 3 / 3
Регистрация: 21.05.2022
Сообщений: 49
10.04.2024, 08:38  [ТС] 6
https://doc.qt.io/qtforpython-... tAttribute я читал! Но открывая QtCore.pyi в редакторе, я не обнаруживаю WA_NoSystemBackground, WA_TranslucentBackground
Предлагают добавить и дописать самостоятельно.

Вы можете помочь в данном вопросе?
0
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
10.04.2024, 09:11 7
без vlc могу
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from PyQt5.QtWidgets import (QApplication,QWidget,QMainWindow,
QLabel,QGridLayout,QPushButton,QFileDialog,QGraphicsView, QGraphicsScene, 
QGraphicsItem, QGraphicsTextItem)
from PyQt5.QtCore import Qt,QUrl, QRectF
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget, QGraphicsVideoItem
 
 
class View(QMainWindow):
    def __init__(self,parent=None):
        super().__init__(parent)
        
        self.view = QGraphicsView()
        self.scene = QGraphicsScene()
        self.view.setScene(self.scene)
        self.setCentralWidget(self.view)
 
        self.video = QGraphicsVideoItem()
        self.player = QMediaPlayer()
        self.player.setVideoOutput(self.video)
        self.video.setPos(0,0)
        self.scene.addItem(self.video)
        
        txt = QGraphicsTextItem()
        txt.setHtml('<font color=red><h1>Текстовая метка</h1></font>')
        txt.setFlags(QGraphicsItem.ItemIsSelectable|QGraphicsItem.ItemIsMovable)
        txt.setPos(100,100)
        self.scene.addItem(txt)
        
        self.btn = QPushButton('Open')
        toolbar = self.addToolBar('')
        toolbar.addWidget(self.btn)
        self.btn.clicked.connect(self.on_open)
        
    def resizeEvent(self,e):
        self.set_rect()
        super().resizeEvent(e)
        
    def set_rect(self):
        rect = self.view.rect()
        self.scene.setSceneRect(QRectF(rect))
        self.video.setSize(QRectF(rect).size())
        
    def on_open(self):
        fname,_ = QFileDialog.getOpenFileName(self,"Open","",'*.mp4',
        options=QFileDialog.DontUseNativeDialog)
        if not fname: 
            return
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(fname)))
        self.player.play()
        self.set_rect()
 
if __name__=="__main__":
    app = QApplication([])
    w = View()
    w.resize(600,400)
    w.show()
    app.exec_()
Миниатюры
Label с прозрачным bg  
2
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
10.04.2024, 09:15 8
Цитата Сообщение от cosmos44 Посмотреть сообщение
from PyQt5 import QtCore, QtGui, QtWidgets, Qt
вам надо было сделать
Python
1
from PyQt5.QtCore import Qt
1
5 / 3 / 3
Регистрация: 21.05.2022
Сообщений: 49
10.04.2024, 09:55  [ТС] 9
Спасибо за ответ! Попробую во второй половине дня, сейчас нет времени.
0
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
11.04.2024, 15:46 10
Попробовал я сделать демонстратор прозрачного фона под Linux, но оказалось, что "не все линуксы одинаково полезны"
Под древнючей OpenSUSE всё работает, а под более-менее современной Lubuntu c LXQT не желает... Если кто сподобится проверить, то маякните о результатах, не сочтите за труд .

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os, sys
from PyQt5 import (
    QtCore,
    QtWidgets
    )
 
class Background_probe(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Background_probe, self).__init__(parent)
        p_btn = QtWidgets.QPushButton('Нажми на кнопку')
        v_box = QtWidgets.QVBoxLayout()
        v_box.addWidget(p_btn)
        h_box = QtWidgets.QHBoxLayout()
        h_box.addLayout(v_box)
        self.setLayout(h_box)
 
        p_btn.pressed.connect(self.on_pressed)
 
    def on_pressed(self):
        w_dlg = QtWidgets.QDialog(self)
        w_lbl = QtWidgets.QLabel('На окне написано слово...')
        v_box = QtWidgets.QVBoxLayout()
        v_box.addWidget(w_lbl)
        h_box = QtWidgets.QHBoxLayout()
        h_box.addLayout(v_box)
        w_dlg.setLayout(h_box)
        w_dlg.setAttribute(QtCore.Qt.WA_NoSystemBackground)
        w_dlg.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        w_dlg.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
        w_dlg.show()
        w_dlg.exec_()
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
 
    mwin = Background_probe()
    mwin.show()
    sys.exit(app.exec_())
Картинка прилагается
Label с прозрачным bg
0
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
11.04.2024, 18:59 11
не взлетело
Миниатюры
Label с прозрачным bg  
1
5 / 3 / 3
Регистрация: 21.05.2022
Сообщений: 49
11.04.2024, 22:34  [ТС] 12
Я новичок, но есть простой вопрос!
Почему не реализовать в библиотеке простое решение? background = "None"
В HTML (та же графика) очень часто используется, а тут нужно через задний проход добраться до данного параметра.
0
943 / 701 / 273
Регистрация: 10.12.2016
Сообщений: 1,733
12.04.2024, 02:19 13
Цитата Сообщение от cosmos44 Посмотреть сообщение
Почему не реализовать в библиотеке простое решение? background = "None"
Qt не графическая библиотека, я бы сказал - офисная. для графики есть QGraphicsView/Scene
можно так
Python
1
2
        lbl = QLabel('<font color=red><h1>Текстовая метка </h1></font>')
        lbl.setStyleSheet("QLabel {background-color: rgba(0,0,0,0);}")
0
12.04.2024, 02:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2024, 02:19
Помогаю со студенческими работами здесь

Как label на форме сделать прозрачным?
backgroundImage для формы задан картинкой .КАК label на форме сделать прозрачным? чтобы было видно...

Как сделать фон Label прозрачным?
Подскажите пожалуйста как мне сделать label1 background прозрачным?

Как сделать фон прозрачным в label
Вот допустим я помещаю картинку вместо фона программы, и помещаю туда label. Как можно сделать так...

Как сделать фон Label прозрачным?
Подскажите, пожалуйста: В vb6 у label было свойство BackStyle, фон можно было делать прозрачным. В...

Label над ProgressBar-ом с прозрачным фоном
Ни как не получается, пробую так: Me.Label1.Parent = ProgressBar1 Me.Label1.BackColor =...

Label, остающийся прозрачным при нажатии на него
Подскажите пожалуйста, как на листе Excel сделать, чтобы при нажатии на label он оставался...

Какое свойство Label делает его прозрачным?
Поместил ан форму рисунок как подложку. На него сверху поместил Label c названием проги. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru