Установить свойства виджета в 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
🇺🇸 Logan Riley and Brandon Mitchell went viral over the weekend after a video was shared of them showcasing their crowdfunded surrogacy baby.
“Brandon Keith Mitchell is a Tier 1 sex offender in the state of #Pennsylvania, and was arrested in 2016 after attempting to solicit a 16-year-old boy for sexual abuse,” the outlet reports Reduxx.
Follow us -> LiveLeak
#Senato, #Pennsylvania: Bob Casey, senatore democratico sconfitto alle elezioni del 2024, annuncerà nei prossimi giorni la volontà di sfidare alle primarie democratiche John Fetterman (D).
🇺🇸#Philadelphia/#Pennsylvania (2025)
"The zombies are here"
Philadelphia is facing a devastating drug crisis. In areas like Kensington, users appear frozen, hunched, and unaware, victims of fentanyl or xylazine-laced drugs.
Follow us -> LiveLeak
George Britton — Pennsylvania Dutch Folk Songs (Folkways Records, 1955)
#traditional#guitar#Pennsylvania#United_States
Профессиональный оперный певец Джордж Бриттен родился в Рединге, Пенсильвания. Наследие Бриттена вдохновило его на поиски и изучение музыки его родных мест – песен, которые представляют собой виньетки его пенсильванского детства, от частушек о «раздражающих вечеринках» до стихотворений в честь праздника Фастнахт. Песни исполнены на Пенсильванском немецком языке — разновидности западно-центрально-немецкого языка, на котором говорят потомки немецких иммигрантов в США и Канаде, тесно связанные с палатинскими диалектами. В США и Канаде проживает более 300 000 носителей этого языка. В Пенсильвании 29,9% населения в настоящее время заявляют о немецком происхождении. Вопреки распространенному мнению, слово «dutch» в «Pennsylvania dutch» не является неправильным переводом, а скорее искажением пенсильванско-немецкого эндонима «deitsch», что означает «Пенсильванский немецкий» или «немецкий». Практика Пенсильванского немецкого языка в городских районах Пенсильвании (таких как Аллентаун, Рединг, Ланкастер и Йорк) сокращалась с приходом 20-го века, в то время как в более сельских районах он продолжал широко использоваться во время Второй мировой войны. С того времени его использование значительно сократилось.
Spotify | AppleMusic
📰Pennsylvania Gas Prices Surge Past $4.15 Gallon in Mifflin County Highest Amid Iran Conflict Fuel Crisis
🔗https://keystonegazette.com/pennsylvania-gas-prices-surge-mifflin-county/?utm_source=telegram&utm_medium=social&utm_campaign=zimm-distribute
via Daily Political Press
#CountyGov#Pennsylvania#Gas#Prices#News
📰 AI’s New Frontier Is a Small Town’s Backyard
Archbald, Pennsylvania has become the kind of place where “progress” arrives with chainsaws, diesel generators, and a brochure. Developers want six data center campuses on about 14 percent of the town’s land, and residents are left wondering why an AI boom has to look like a land grab.
The pitch is classic corporate folklore: jobs, tax revenue, future, optimism. The reality is less glossy — forests cut down, neighbors pushed close to massive warehouses, and a community suddenly asked to absorb the noise, water demand, and grid strain for an industry that won’t even say which tech firms will move in.
What makes Archbald interesting is that the backlash is not just environmental. It is political, emotional, and deeply local, with residents flooding meetings, forcing resignations, and turning a sleepy borough into a referendum on who gets to decide the future of a town.
That’s why the fight keeps spreading. Data centers are being sold as invisible infrastructure, but people living next to them are discovering they are anything but invisible once the stumps, generators, and property lines show up.
So the AI economy’s clean little slogan runs into the oldest American response: not here, not on our land, and not without a real answer about who pays the price.
#AI#dataCenters#Pennsylvania#Archbald#development#localpolitics
📱American Оbserver - Stay up to date on all important events
🇺🇸