TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в 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

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #sayhername

当前筛选 #sayhername清除筛选

Обновленный список иранских протестных акций в сентябре 2024 (все еще пополняется). Основной блок акций и др.мероприятий, 14, 15 и 16 сентября: Австралия, Аделаида, 15/09 Австралия, Брисбейн, 14/09 Австралия, Мельбурн, 14/09 Австралия, Сидней, 15/09 Австралия, Хобарт, 15/09 Австрия, Вена, 14/09 Бельгия, Брюссель, 14/09 Великобритания, Лидс, 15/09 Великобритания, Лондон, 15/09 Великобритания, Манчестер, 15,09 Дания, Копенгаген, 14/09 Германия, Берлин, 14/09 Германия, Гамбург, 14/09 Германия, Ганновер, 14/09 Германия, Гёттинген, 16/09 Германия, Дармштадт, 15/09 Германия, Дортмунд, 16/09 Германия, Йена, 14/09 Германия, Кельн, 14/09 и 15/09 Германия, Киль, 13/09 Германия, Констанц, 16/09 Германия, Марбург, 16/09 Германия, Мюнстер, 14/09 Германия, Мюнхен, 16/09 Германия, Нюрнберг, 15/09 Германия, Франкфурт, 14/09 и 16/09 Испания, Барселона, 15/09 Испания, Малага, 14/09 Испания, Мадрид, 15/09 Испания, Фуэнхирола, 16/09 Италия, Венеция, 14/09 Италия, Милан, 14/09 Италия, Рим, 14/09 Италия, Флоренция, 14/09 Канада, Ванкувер, 14/09 и 15/09 Канада, Квебек, 15/09 Канада, Монреаль, 15/09 Канада, Оттава, 15/09 Канада, Торонто, 15/09 Канада, Эдмонтон, 14/09 Кипр, Пафос, 14/09 Люксембург, Люксембург, 14/09 Нидерланды, Амстердам, 14/09 Нидерланды, Гаага, 15/09 Нидерланды, Гронинген, 14/09 Новая Зеландия, Данедин, 21/09 Новая Зеландия, Крайстчерч, 15/09 Новая Зеландия, Окленд, 15/09 Норвегия, Берген, 14/09 Норвегия, Ставангер, 14/09 Норвегия, Осло, 14/09 и 15/09 Португалия, Лиссабон, дата уточняется США, Атланта, 15/09 США, Белвью (Bellevue), WA, 14/09 США, Бойсе, 14/09 США, Бостон, Дедхэм (MA), 14/09 США, Вашингтон, округ Колумбия, 15/09 США, Даллас, 15/09 США, Дейвис (Davis, CA), 15/09 США, Ирвайн (Irvine, CA), 14/09 США, Лос-Анджелес, Вествуд, 15/09 США, Луисвилль (KY), 15/09 США, Миннеаполис (MN), 15/09 США, Нэшвилль (TN), 15/09 США, Нью-Йорк Сити, 15/09 США, Сан-Диего (SC), 15/09 США, Сан-Франциско, 14/09 США, Сиэттл (WA), 14/09 США, Таллахасси (FL), 15/09 США, Филадельфия, 15/09 и 16/09 США, Хьюстон, 15/09 США, Чикаго, 15/09 Финляндия, Тампере, 16/09 Финляндия, Турку, 14/09 Франция, Гренобль, 14/09 Франция, Страсбург, 15/09 Франция, Париж, 15/09 (перед иранской акцией будет также акция в поддержку женщин Афганистана) Швейцария, Женева, 14/09 Швейцария, Цюрих, 15/09 Швеция, Гётеборг, 14/09 Швеция, Мальмё, 14/09 Швеция, Стокгольм, 14/09 (основной митинг) и 15/09 (акция памяти) Список постоянно пополняется. Не все акции проходят под названием "Say her name", это могут быть также "Mahsa Day", "Woman. Live. Freedom" или некоторые другие названия. Если вы знаете об иранских акциях, которых нет в этом списке, дайте мне, пожалуйста, знать. #WomanLifeFreedom#IranProtest#IranRevolution#JusticeForIran#FreeIran#IRGCterrorists#SayHerName#MahsaDay#ЖенщинаЖизньСвобода#СвободуИрану#ИранскийПротест#Иран#МахсаАмини