Установить свойства виджета в 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
Очередной раунд вложений: Акции, ETF, облигации и золото📈💰
Всем привет, настал очередной раунд вложений. Сегодня в выпуске:
🔹#Акции
Я продолжаю придерживаться консервативной стратегии инвестирования в #ETF на так называемый «широкий рынок». Однако, как и в прошлый раз, планирую часть вложений направить в экономику страны проживания. Тогда часть средств достались #DHL и #Lufthansa. Сегодня я планирую стать владельцем части акций Баварского Моторного Завода (или попросту Бэ Эм Зэ), который, несмотря на скепсис широкого круга инвесторов и неразбериху с зелёной повесткой, прочно стоит на ногах и планирует демонстрировать хорошие результаты дальше. Лично видел, NDA не подписывал.
▫️BMW.DE / Bayerische Motoren Werke — 88€
📊Инвестиции в ETF
В этом раунде вложения следующие:
▫️VUAA/ Vanguard S&P 500 UCIT ETF (Фонд состоит из 500 самых крупных американских компаний) — 572€
▫️SNAW/iShares MSCI World ESG Screened — 496€ (Этот фонд ориентирован на широкодиверсифицированные вложения в мировую экономику в целом)
▫️VGDW/Vanguard FTSE All-World High Dividend Yield UCITS ETF — 373€ (Фонд инвестирует в высокодивидендные компании во всём мире)
🔹#Облигации
▫️CBUE/iShares USD Treasury Bond 3-7yr (Бонды американского казначейства) — 87€
🔹#REIT (Real Estate Investment Trusts)
▫️10AJ / Amundi Index FTSE EPRA NAREIT Global UCITS ETF (Глобальный фонд инвестиций в недвижимость по всему миру, по версии западных стран, конечно же) — 106€
Верю, что мы всё ещё восстанавливаемся от пандемии и у арендной ренты светлое будущее.
🔹#Металлы
В этот раз отвлекусь от виртуальных сущностей и вкладываюсь в натуральное золото в лице, пожалуй, самой популярной инвестиционной монеты «Канадский кленовый лист», отчеканенной из 1/10 унции золота 9999 пробы в 2023 году.
▫️ 1/10 Unze Gold Maple Leaf — 245€
💸Итог
В этом инвестиционном раунде вложено: 1976€
Спасибо, что проходите со мной этот путь. На следующей, не менее загруженной для меня неделе, обсудим результаты портфеля. Ставьте реакции и делитесь постом!
#Результаты_schrittproschritt
Всем привет! Мне везёт периодически отчитываться во время всяческих мировых потрясений. Хотя, когда я собираю данные (полдень по CET), выглядит всё не так уж и жутко, как можно было бы предположить, исходя из новостного фона.
Важно: доходность активов я считаю без учёта новых вложений за последний период (февраль — начало марта), однако аллокация (общие суммы и проценты) указана уже с их учётом.
📊 Детализация портфеля на дату отчета
Формат: (Сумма) / (% от портфеля) 📈📉 (Прибыль за период) / (% доходности)
🔹#Акции
€14 844,01 / 69,15% 📉 −€71,55 / −0,61%
Война на Ближнем Востоке пугает инвесторов.
🔹#Облигации
€3 302,60 / 15,39% 📉 −€9,04 / −1,77% Бонды чуток припали. Рынок нервничает: потенциальный рост затрат в цепочках добавленной стоимости из-за неопределённости на энергорынках может сказаться на способности эмитентов обслуживать долги.
🔹#Металлы (#золото)
€156,69 / 0,73% 📈 +€9,69 / +6,59% Продолжаем расти, стоимостно выражая страхи масс. Считаю этот рост спекулятивным; а если я не прав, то пора начинать собирать крышки от колы, как в Fallout ☢️
🔹#Криптовалюта
€2 068,78 / 9,64% 📉 −€9,00 / −0,43% Падение предыдущих месяцев сгладилось на фоне попыток инвесторов найти «тихую гавань» в нестабильный период.
🔹#Альтернативные_инвестиции
€1 093,79 / 5,10% 📉 −€1,21 / −0,11% Первый месяц, когда этот класс активов оказался устойчивее всех остальных.
📉 Общие итоги портфеля
Общая стоимость: €21 465,87 (разместил дополнительные €6000+)
Убыток за период: −€81,11 / −0,52%
Пока весь мир «колбасит и трясёт» (с), аллокация активов в портфеле стала почти идеально отражать изначальную идею по диверсификации. Было бы неплохо добавить больше товарных активов и #REIT (фонды недвижимости), но морально я пока не готов заходить в них по текущим ценам.
Спасибо, что читаете! Интересно ваше мнение: как думаете, насколько долго продлится напряжение (де-юре) / война (де-факто) на Ближнем Востоке? 💬
Очередной раунд вложений: Акции, ETF, облигации, корпоративный долг и золото 📈💰
Привет всем! 🌟
Время нового раунда вложений. Если в прошлом месяце из-за глобальной неопределённости я не успел «припарковать» денежные средства, то сейчас уже есть ощущение, что нет смысла ждать негативного разрешения стратегического персидского цугцванга. Так как предыдущие инвестиции не были реализованы, в этом посте я несколько расширяю идеи, сохраняя пару прошлых позиций.
🔹#Акции
Продолжаю придерживаться консервативной стратегии инвестирования в #ETF на так называемый «широкий рынок». Однако, как и в прошлый раз, часть средств планирую направить в экономику страны проживания. В прошлый раз инвестиции достались #DHL и #Lufthansa. Сегодня в планах покупка акций Баварского Моторного Завода (или попросту Бэ Эм Зэ), который, несмотря на скепсис многих инвесторов и неразбериху с «зелёной повесткой», прочно стоит на ногах и, по моему мнению, продолжит показывать отличные результаты. Лично видел, NDA не подписывал.
📌BMW.DE / Bayerische Motoren Werke — 88€
📊Инвестиции в ETF
В этом раунде мои вложения следующие:
▫️ VUAA / Vanguard S&P 500 UCITS ETF (Фонд состоит из 500 крупнейших американских компаний) — 1150€
▫️ SNAW / iShares MSCI World ESG Screened (Ориентирован на широкую диверсификацию по мировой экономике) — 1000€
▫️ VGDW / Vanguard FTSE All-World High Dividend Yield UCITS ETF (Инвестиции в высокодивидендные компании по всему миру) — 750€
🔹#Облигации
▫️ CBUE / iShares USD Treasury Bond 3-7yr (Облигации американского казначейства) — 180€
▫️ IBCD / iShares Corporate Bond (Корпоративные долги развитых стран с доходностью около 5%) — 125€
🔹#REIT (Real Estate Investment Trusts)
▫️ 10AJ / Amundi Index FTSE EPRA NAREIT Global UCITS ETF (Глобальный фонд инвестиций в недвижимость) — 212€
Верю, что мы всё ещё восстанавливаемся после пандемии, и у арендной ренты светлое будущее 🏢.
🔹#Металлы
На этот раз вкладываюсь в натуральное золото, а именно в одну из самых популярных инвестиционных монет — «Канадский кленовый лист». Она отчеканена из 1/10 унции золота 9999 пробы в 2023 году.
▫️1/10 Unze Gold Maple Leaf — 255€
Конечно, не обойдётся и без виртуальных металлов:
▫️XAU (Gold) / Золото — 245€
💸Итог
Общая сумма вложений в этом раунде — 4000€.
Это достаточно большое единовременное вложение, которое должно неплохо диверсифицировать портфель и сместить фокус с криптовалют, особенно после недавнего Airdrop. За 4 минуты участия я получил самую рекордную прибыль в своей жизни по соотношению «время / доход» 😎. Но об этом расскажу в середине недели.
📆 В среду постараюсь подвести итоги прошлого месяца, который подарил нам увлекательные американские горки на рынках. Спасибо, что читаете! Последние несколько недель были напряжёнными, но я полон сил писать больше 💪.
Как всегда, лайкайте, делитесь и обсуждайте в комментариях!