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

Как применить таблицу стилей к пользовательскому виджету в PyQt

# -*- coding: utf-8 -*-

import sys
from PyQt4.QtGui import *  
from PyQt4.QtCore import * 

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setFixedWidth(200)
        self.setFixedHeight(200)

        stylesheet = \
            ".QWidget {\n" \
            + "border: 20px solid black;\n" \
            + "border-radius: 4px;\n" \
            + "background-color: rgb(255, 255, 255);\n" \
            + "}"
        self.setStyleSheet(stylesheet)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

Я хочу добавить рамку к пользовательскому виджету с таблицей стилей, но таблица стилей не работает, что-то не так?


  • Вы пытались удалить точку перед QWidget? 19.03.2014
  • хотя вы получили ответ, который кажется адекватным, подумайте о том, чтобы быть более конкретным, чем не работает, как ожидалось, сказав (даже сейчас, когда на ваш вопрос был дан ответ), что конкретно вы ожидали и какая часть этого не сработала. 21.03.2014
  • Ладно, в следующий раз сделаю лучше~ 21.03.2014

Ответы:


1

Во-первых: добавьте реальный виджет в свой пример:

    self.widget = QWidget(self)
    layout = QVBoxLayout(self)
    layout.addWidget(self.widget)

Во-вторых: сделайте себе одолжение и используйте тройные кавычки:

    self.widget.setStyleSheet("""
        QWidget {
            border: 20px solid black;
            border-radius: 10px;
            background-color: rgb(255, 255, 255);
            }
        """)

Точечный селектор в вашем примере является избыточным. Что он делает, так это указывает, что будут выбраны только экземпляры самого QWidget, а не подклассы QWidget. См. руководство по StyleSheet в документации по Qt.

19.03.2014
  • По какой-то причине удаление точечного селектора было той разницей, которая заставила меня работать! 11.04.2019

  • 2

    В папку вашего проекта добавьте базовый файл CSS mystylesheet.css. Многоязычные редакторы, такие как Atom, лучше всего подходят для таких вещей. Подсветка синтаксиса работает правильно, если вы сохраните имя файла CSS.

    Затем отпустите точку; qt знает, что вы имеете в виду.

    таблица стилей.css

    QWidget {
        border: 20px solid black;
        border-radius: 10px;
        background-color: rgb(255, 255, 255);
    }
    
    anyQelement.setStyleSheet(open('mystylesheet.css').read())
    
    27.09.2018
  • Было бы лучше использовать с open(mystylesheet.css, 'r') как с файлом: sheet = file.read() anyQelement.setStyleSheet(sheet) чтобы обеспечить правильное закрытие файла? 11.06.2020
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: 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 и запросов...