Установить свойства виджета в PySide можно не только через соответствующие методы и конструктор класса. Можно их изменять с помощью метода setProperty по имени.
btn = QPushButton("Click Me")
btn.setProperty("flat", True)
Это аналогично вызову
btn.setFlat(True)
Если указать несуществующее свойство, то оно просто создается
btn.setProperty("btnType", "super")
Получить его значение можно методом .property(name)
btn_type = btn.property("btnType")
Когда это может быть полезно?
▫️Можно просто хранить какие то данные в виджете и потом их доставать обратно
widget = QWidget()
widget.setProperty('my_data', 123)
print(widget.property('my_data'))
▫️ Назначая эти свойства разным виджетам можно потом отличить виджеты во время итераци по ним. Например, найти все кнопки со свойством my_data="superbtn".
Но ведь вместо кастомного свойства можно использовать objectName, будет тот же результат.
Да, но y ObjectName есть ограничение - только строки.
▫️ Если нам потребуется не просто поиск а, например, сортировка по числу, то свойства позволяют нам это сделать. Поддерживается любой тип данных
widget.setProperty('my_data', {'Key': 'value'})
widget.setProperty('order', 1)
all_widgets.sort(key=w: w.property('order'))
Но ведь Python позволяет всё вышеперечисленное сделать простым созданием атрибута у объекта
widget.order = 1
widget.my_data = 123
Да, но я думаю что не надо объяснять почему не стоит так делать. К тому же, если у виджета нет свойства то метод .property(name) вернет None, а отсутствующий атрибут выбросит исключение.
▫️ Действительно полезное применение кастомным свойствам - контроль стилей. Здесь атрибутами не обойтись, нужны именно свойства.
Дело в том, что в селекторах стилей можно указывать конкретные свойства виджетов на которые следует назначать стиль.
Просто запустите этот код
from PySide2.QtWidgets import *
if __name__ == "__main__":
app = QApplication([])
widget = QWidget(minimumWidth=300)
layout = QVBoxLayout(widget)
btn1 = QPushButton("Action 1")
btn2 = QPushButton("Action 2")
btn3 = QPushButton("Action 3", flat=True)
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
# добавим кастомное свойство одной кнопке
btn1.setProperty("btnType", "super")
# добавляем стили
widget.setStyleSheet(
"""
QPushButton[btnType="super"] {
background-color: yellow;
color: red;
}
QPushButton[flat="true"] {
color: yellow;
}
"""
)
widget.show()
app.exec_()
С помощью селектора мы избирательно назначили стили на конкретные кнопки.
Как получить список всех кастомный свойств?
Функция получения списка кастомных свойств отличается от получения дефолтных.
def print_widget_dyn_properties(widget):
for prop_name in widget.dynamicPropertyNames():
property_name = prop_name.data().decode()
property_value = widget.property(property_name)
print(f"{property_name}: {property_value}")
#tricks#qt
По данным Американского института нефти, за неделю, закончившуюся 9 января, коммерческие запасы нефти в США неожиданно выросли на 5,27 млн баррелей после снижения на 2,8 млн баррелей на предыдущей неделе.
По имеющимся данным, запасы бензина за неделю увеличились на 8,23 млн баррелей, запасы дистиллятов — на 4,34 млн баррелей, а запасы в Кушинге — на 945 тыс. баррелей.
Управление энергетической информации планирует опубликовать еженедельный отчёт о поставках нефти в США в среду. В среднем аналитики, опрошенные The Wall Street Journal, прогнозируют, что коммерческие запасы сырой нефти в стране сократятся на 1,4 млн баррелей, запасы бензина вырастут на 1,7 млн баррелей, а запасы дистиллятов останутся примерно на том же уровне.
Февральские фьючерсы на нефть марки #WTI недавно торговались по цене 61,06 доллара за баррель после того, как во вторник цена составила 61,15 доллара за баррель.
@Bloomberg4you
Ещё больше информации о мировых рынках и экономике - ЗДЕСЬ
Werewolf Telegram Indonesia
Tempat bermain Werewolf online dan berusaha menjadi rumah kedua bagi kalian yang penat di real life. Sedikit info karena grup baru banget, jadi lagi ada event total anarchy atau bisa disebut NO RULES. APA ITU SEER?BAKAR !!!
📍@werewolfteleindo
#Indonesia#WTI
📈 Цены на нефть восстановились после падения, но остаются под давлением роста запасов в США
Сегодня на азиатских торгах нефть немного отыграла потери предыдущего дня. Так, декабрьские фьючерсы на Brent поднялись на 0,76% до $77,77 за баррель, а контракты на WTI подорожали на 0,73% до $74,10 за баррель.
📉 Что произошло ранее?
Во вторник цены на нефть упали на более чем 4% на фоне сообщений о том, что ливанская группировка «Хезболла» добивается прекращения огня с Израилем. Это может свидетельствовать о потенциальной деэскалации конфликта на Ближнем Востоке, который ранее поддерживал высокие котировки на нефть.
🇨🇳Китай и экономические стимулы
Нефтяные рынки также находятся под давлением из-за охлаждения ожиданий относительно новых мер поддержки экономики Китая, который является крупнейшим импортером нефти.
📌 Что дальше?
Рынки ждут официального отчета Минэнерго США. Если данные подтвердят резкий рост запасов, это может усилить опасения по поводу спроса на топливо и повлиять на дальнейшее движение цен.
#АнализРынка#нефть#Brent#WTI
Нефть резко дешевеет после недавнего роста
К утру в Москве майские фьючерсы на Brent упали на 6,13%, достигнув $92,89 за баррель, несмотря на рост в понедельник. Аналогично, апрельские фьючерсы на WTI снизились на 6,53%, до $88,58 за баррель. Такой откат происходит после достижения максимумов более чем за три года, когда нефть стоила около $120 за баррель. Коррекция цен отражает баланс между спросом и предложением на мировом рынке.
Источник: interfaxonline
#нефть#Brent#WTI#рынок#экономика
Главные новости России и мираздесь.
Нефть продолжает дорожать на мировых рынках
В среду утром цены на нефть марки Brent выросли на 0,82%, достигнув $67,88 за баррель, продолжив рост после заметного подорожания на 1,6% во вторник. Фьючерсы на WTI также прибавили почти 1%, поднявшись до $63,83 за баррель. Рост цен поддерживается оптимизмом на фоне стабильного спроса и ожиданий по сокращению поставок. Такие данные приводит @interfaxonline.
#нефть#Brent#WTI#цены#энергетика
Главные новости России и мираздесь.
Нефть утром восстанавливает утраченные позиции
В четверг утром цена майских фьючерсов на Brent поднимается на 1,81% — до $104,07 за баррель после падения на 2,2% накануне. Контракты на WTI выросли на 1,92%, достигнув $92,05, после снижения на 2,2%. Рост свидетельствует о коррекции рынка после вчерашних потерь.
"Цены на нефть демонстрируют волатильность на фоне глобальных экономических и геополитических факторов."
#нефть#Brent#WTI#энергетика#рынок
Главные новости России и мираздесь.
Нефть снижается утром в среду после роста во вторник
К 8:11 мск майские фьючерсы Brent на ICE Futures упали на $2,15 (2,08%), до $101,27 за баррель после роста на $3,21 во вторник. Аналогично, апрельские фьючерсы WTI на NYMEX снизились на $2,95 (3,07%), до $93,26, хотя ранее выросли на $2,71. Коррекция цен отражает волатильность на мировом нефтяном рынке.
"Рынок нефти остается под давлением геополитики и спроса," — отмечают эксперты.
#нефть#Brent#WTI#рынок#энергетика
Главные новости России и мираздесь.
Цена нефти Brent превысила $92 за баррель, WTI — выше $90
Стоимость майских фьючерсов на Brent на лондонской бирже ICE выросла почти на 7,8%, превысив $92 за баррель. Американская нефть WTI на апрель на NYMEX подскочила более чем на 11%, достигнув отметки выше $90 за баррель. Такие резкие скачки связаны с глобальной нестабильностью на энергетическом рынке и геополитическими факторами.
Источник: interfaxonline
#нефть#Brent#WTI#энергетика#рынок
Главные новости России и мираздесь.