Squeak.ru - шаблоны программирования

PYQT5: невозможно установить цвет фона для пользовательского виджета

У меня есть пользовательский QWidget с QHBoxLayout() в качестве макета и два других виджета, установленных в указанном макете. И все это находится внутри другого QWidget, который установлен как центральный виджет для моего QMainWindow. Я хочу установить цвет фона для CustomWidget, но по какой-то причине между двумя его виджетами всегда есть промежуток. Кроме того, похоже, это происходит только с пользовательскими виджетами; изображение 1 — как это выглядит при использовании QWidget, изображение 2, как это выглядит с CustomWidget. Как я могу заставить его выглядеть как изображение 1 даже с CustomWidget?

import sys

from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from PyQt5 import QtCore as qtc

class MainWindow(qtw.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setStyleSheet('background: green;')
        self.mainwidget = qtw.QWidget()
        self.mainwidget.setLayout(qtw.QVBoxLayout())
        self.label1 = qtw.QLabel(pixmap=qtg.QPixmap('image.png'))
        self.label2 = qtw.QLabel('texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext')
        text = qtw.QScrollArea()
        text.setWidget(self.label2)
        self.widget = CustomWidget()
        self.widget.setLayout(qtw.QHBoxLayout())
        self.widget.layout().addWidget(self.label1)
        self.widget.layout().addWidget(text)
        self.widget.setStyleSheet('background: red')
        self.mainwidget.layout().addWidget(self.widget)
        self.setCentralWidget(self.mainwidget)
        self.show()

class CustomWidget(qtw.QWidget):
    def __init__(self):
        super().__init__()

if __name__ == '__main__':
    app = qtw.QApplication(sys.argv)
    mw = MainWindow()
    sys.exit(app.exec_())
29.06.2021

  • Попробуйте установить свойство интервала макета layout= QHBoxLayout(); layout.setSpacing(0) 29.06.2021
  • Это связано не с макетами, а с тем, как работают таблицы стилей. По своей структуре базовый QWidget учитывает свойство фона в таблицах стилей, но подклассы этого не делают, поскольку разработчики могут предпочесть использовать свойство фона по-своему. Просто установите атрибут Qt.WA_StyledBackground для пользовательского класса или реализуйте его paintEvent. 29.06.2021
  • Да, настройка Qt.WA_StyledBackground сработала, спасибо! Кстати, я часто сталкивался с этой paintEvent штуковиной в своем стремлении создать графический интерфейс Qt, но что это такое? Это полезно только при создании графического интерфейса для рисования? Кажется, я не могу найти много объяснений его связи с виджетами, отличными от QPainter. Не могли бы вы описать это, пожалуйста? 29.06.2021

Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...