Я работаю над созданием шаблона таблицы стилей QSS, который я могу использовать для всех моих приложений PYQT6. Когда я использую таблицу стилей, чтобы изменить стиль Qcombobox, я теряю стрелку вниз. Насколько я понимаю, если я стиляю одну часть сочетания, я должен стилизовать всю коробку для сочетания, что не является проблемой. Затем у меня есть отдельные файлы для каждой цветовой темы (то есть Light & Dark) с соответствующей записью @Widget-background = #777777 для светло-серого цвета. Во время выполнения я просто читаю в шаблоне как укус и выполняю замену для каждой из цветных тегов. Это работает потрясающе и позволяет легко добавлять цветные темы, не воссоздавая всю таблицу стилей. Я знаю, что могу поставить изображение PNG или SVG в таблице стиля, которое работает достаточно хорошо. Но это не так элегантно, как хотелось бы. Прежде всего, я должен создать отдельный файл изображения для каждой цветовой темы. Во -вторых, я должен открыть файл SVG в виде текстового файла и вручную изменить цвета (да, я знаю, что могу это автоматизировать). Итак, что я хотел бы сделать, это встроить контент SVG в таблицу стилей. Насколько я понимаю, это возможно, и я нашел пример на StackOverflow (встроенный SVG в CSS). < /P>
На основе этого решения я собрал следующее базовое приложение с одним Qcombobox с применением таблицы стилей.import sys
from PyQt6.QtWidgets import QApplication, QComboBox, QVBoxLayout, QWidget
class ComboBoxTest(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# Create a QComboBox
combo_box = QComboBox(self)
combo_box.addItems(["Option 1", "Option 2", "Option 3"])
# Minimal stylesheet with embedded SVG for down arrow
combo_box.setStyleSheet("""
QComboBox {
background-color: #f0f0f0;
color: #000000;
border: 1px solid #0078d4;
border-radius: 4px;
padding: 2px;
}
QComboBox::drop-down {
background-color: #dcdcdc;
border: none;
width: 20px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
QComboBox::down-arrow {
image: url("data:image/svg+xml;charset=utf-8,");
}
""")
# Layout to hold the combo box
layout = QVBoxLayout(self)
layout.addWidget(combo_box)
self.setLayout(layout)
self.setWindowTitle('QComboBox SVG Test')
self.resize(300, 100)
def main():
app = QApplication(sys.argv)
window = ComboBoxTest()
window.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
< /code>
Когда я запускаю это с помощью Python 3.11 и Pyqt6, стрелка не отображается. Вы видите что -нибудь не так? Этот код работает правильно для вас? У вас есть другие идеи о том, как я могу сделать это, желательно полностью в моей таблице стилей?>
Подробнее здесь: https://stackoverflow.com/questions/789 ... bedded-svg
PYQT6 QSS SHILE с встроенным SVG ⇐ CSS
Разбираемся в CSS
1751433591
Anonymous
Я работаю над созданием шаблона таблицы стилей QSS, который я могу использовать для всех моих приложений PYQT6. Когда я использую таблицу стилей, чтобы изменить стиль Qcombobox, я теряю стрелку вниз. Насколько я понимаю, если я стиляю одну часть сочетания, я должен стилизовать всю коробку для сочетания, что не является проблемой. Затем у меня есть отдельные файлы для каждой цветовой темы (то есть Light & Dark) с соответствующей записью @Widget-background = #777777 для светло-серого цвета. Во время выполнения я просто читаю в шаблоне как укус и выполняю замену для каждой из цветных тегов. Это работает потрясающе и позволяет легко добавлять цветные темы, не воссоздавая всю таблицу стилей. Я знаю, что могу поставить изображение PNG или SVG в таблице стиля, которое работает достаточно хорошо. Но это не так элегантно, как хотелось бы. Прежде всего, я должен создать отдельный файл изображения для каждой цветовой темы. Во -вторых, я должен открыть файл SVG в виде текстового файла и вручную изменить цвета (да, я знаю, что могу это автоматизировать). Итак, что я хотел бы сделать, это встроить контент SVG в таблицу стилей. Насколько я понимаю, это возможно, и я нашел пример на StackOverflow (встроенный SVG в CSS). < /P>
На основе этого решения я собрал следующее базовое приложение с одним Qcombobox с применением таблицы стилей.import sys
from PyQt6.QtWidgets import QApplication, QComboBox, QVBoxLayout, QWidget
class ComboBoxTest(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# Create a QComboBox
combo_box = QComboBox(self)
combo_box.addItems(["Option 1", "Option 2", "Option 3"])
# Minimal stylesheet with embedded SVG for down arrow
combo_box.setStyleSheet("""
QComboBox {
background-color: #f0f0f0;
color: #000000;
border: 1px solid #0078d4;
border-radius: 4px;
padding: 2px;
}
QComboBox::drop-down {
background-color: #dcdcdc;
border: none;
width: 20px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
QComboBox::down-arrow {
image: url("data:image/svg+xml;charset=utf-8,");
}
""")
# Layout to hold the combo box
layout = QVBoxLayout(self)
layout.addWidget(combo_box)
self.setLayout(layout)
self.setWindowTitle('QComboBox SVG Test')
self.resize(300, 100)
def main():
app = QApplication(sys.argv)
window = ComboBoxTest()
window.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
< /code>
Когда я запускаю это с помощью Python 3.11 и Pyqt6, стрелка не отображается. Вы видите что -нибудь не так? Этот код работает правильно для вас? У вас есть другие идеи о том, как я могу сделать это, желательно полностью в моей таблице стилей?>
Подробнее здесь: [url]https://stackoverflow.com/questions/78957189/pyqt6-qss-style-sheet-with-embedded-svg[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия