Установить свойства виджета в 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
⠀⠀
Квентин Тарантино – гений кинематографического хулиганства, чьи фильмы взрывают каноны и переписывают правила большого кино.
⠀⠀
🎬 Чем вдохновляется режиссер, сам являющийся вдохновением для многих?
⠀⠀
📽«Банда аутсайдеров», 1964
Французская Новая волна сформировала Тарантино как личность, а Жан-Люк Годар – прежде всего. Фильм так сильно повлиял на молодого режиссера, что он назвал свою кинокомпанию в честь ленты: Bande à part.
⠀⠀
📽 «Стукач», 1962
На Тарантино большое влияние оказали нео-нуарные работы французского режиссера Жан-Пьера Мелвилла. Фильм «Бешеные псы» – это дань уважения режиссеру.
⠀
📽 «Большой побег», 1963
Тарантино включил военную драму со Стивом Маккуином режиссера Джона Стерджеса в свой персональный топ-10 величайших фильмов всех времен. Погоня на мотоцикле вдохновила его на картину «Доказательство смерти».
⠀
📽 «Королевская битва», 2000
«Если и есть какой-то фильм, снятый с тех пор, как я снимаю кино, и который я хотел бы снять сам, так это этот».
⠀
📽 «Нападение на 13-й участок», 1976
Тарантино отдал дань уважения фильму Карпентера через персонажа Скотта Фуллера в своем совместном с Робертом Родригесом фильме «От заката до рассвета».
⠀
📽 «Прокол», 1981
Тарантино так понравилась игра Джона Траволты в триллере Брайана Де Пальмы, что он решил написать идеальную роль, которая спасет карьеру актера («Криминальное чтиво»).
⠀
📽 «Бойцовский клуб», 1999
Брэд Питт впоследствии стал одной из главных звезд Тарантино, сыграв главную роль в фильмах «Бесславные уб**дки» и «Однажды в… Голливуде».
⠀
📽 «Великое молчание», 1968
«Действие фильма происходит в снегу. Мне так это понравилось, что в "Джанго освобожденном" есть большой снежный участок в середине фильма».
⠀
📽 «Апокалипсис сегодня», 1979
Обладатель «Золотой пальмовой ветви» — самый любимый фильм Тарантино. Он так восторгается им, что добавил отсылку к фильму в сценарий «Настоящей любви».
⠀
⠀
❓Делитесь в комментариях, какие фильмы из этого списка или самого Тарантино у вас в числе любимых?
⠀
#КвентинТарантино#QuentinTarantino
Бонус для любителей Боуи и Квентина. Фрагмент фильма «Бесславные ублюдки».
Квентин говорил
Я действительно всегда любил эту песню. Это одна из моих любимых песен Дэвида Боуи восьмидесятых, но мне никогда не нравилось то, как ее использовали в фильме «Люди-кошки», ведь Пол Шредер, на самом деле, вообще не использовал ее в картине.
Он просто зашвырнул ее в финальные титры. Помню, как мы с парнями в Video Archives (прокат видеокассет, где работал Тарантино) были очень разочарованы. Мы говорили: «Чувак, если бы у нас была такая песня, написанная для нашего фильма, мы бы создали вокруг нее двадцатиминутный эпизод!»
Так я и сделал.
#QuentinTarantino
#DavidBowie
#CatPeople
#МояТаРаНтиНовЩиНа
📷Атмосферные фото с премьеры «Криминального чтива» на Каннском кинофестивале 1994 года.
Шедевр Квентина Тарантино был впервые представлен публике в этот день ровно 31 год назад.
#ВИДЕОТЕКА
#QuentinTarantino
#PulpFiction
#BruceWillis
#JohnTravolta
#SamuelLJackson
#UmaThurman
⠀
🌟Квентин Тарантино, Ума Турман, Джон Траволта, Брюс Уиллис, Сэмюэл Л. Джексон и Мария ди Медейруш на Каннском кинофестивале, 1994
⠀
🏆В тот год фильм «Криминальное чтиво» был удостоен «Золотой пальмовой ветви»
⠀
⠀
#КвентинТарантино#УмаТурман#ДжонТраволта#БрюсУиллис#СэмюэлЛДжексон#МариядиМедейруш#QuentinTarantino#JohnTravolta#SamuelLJackson#BruceWillis#UmaThurman#MariadeMedeiros
В эти дни ровно 30 лет назад на экраны вышел фильм Роберта Родригеса «Отчаянный». Не то ремейк, не то продолжение его же дебютной работы «Музыкант» — с другими актерами, с бОльшим масштабом и бюджетом. Хотя здесь скорее из категории «нано» перешли в разряд «микро», и на тех же дублерах пришлось здорово экономить. Но у Родригеса этот боевик получился настолько лихим, стебным и запоминающимся, что на все недостатки бюджета и сюжетную простоту уже как-то на автомате не обращаешь внимание.
Именно здесь Антонио Бандерас впервые заявил о себе как главный мачо мирового кино, который и наркомафию с двух рук штабелями уложит, и сердце молодой Сальмы Хайек покорит, и песню Эль Марьячи вместе с группой Los Lobos в начальных титрах споет так зажигательно, что этот мотив и этот припев навсегда отпечатается в нашей памяти. Просто сравните его персонажа в «Отчаянном» с ролями у Педро Альмодовара или в той же «Филадельфии» Джонатана Демме, и все поймете сами.
Именно здесь Квентин Тарантино сделал заявку на звание одного из лучших рассказчиков анекдотов в истории кино (хотя и эту сцену, как говорил однажды Борис Хохлов, он тоже позаимствовал из одного гонконгского фильма). Именно здесь мы увидим самого наглого и бессовестного в мире бармена в исполнении Чича Марина. Именно здесь суровый Дэнни Трехо своими метательными ножами говорил красноречивее многих других актеров.
Наконец, именно в «Отчаянном» буквально с пролога мы с головой ныряем в этот коктейль из здорового киношного раздолбайства, откровенного стеба и невероятного куража, который Роберт Родригес на излете 90-х явно начнет терять. В начале нулевых постановщик получит для сиквела с претенциозным названием «Однажды в Мексике» карт-бланш, реально серьезный бюджет и шикарный актерский ансамбль. Но это кино в итоге получится в лучшем случае странным и вымученным.
Так что лучше запомните именно эту историю про Эль Марьячи. Сколько раз я бы ни смотрел этот фильм — всегда испытываю ровно те же эмоции, что и четверть века назад, когда вместе с дедом впервые наткнулись на пиратский показ «Отчаянного» по Копейскому телевидению в переводе Визгунова. И не смогли оторваться.
#ВИДЕОТЕКА
#ВИДЕОТЕКАКино1995
#Desperado
#Отчаянный
#AntonioBanderas
#АнтониоБандерас
#RobertRodriguez
#РобертРодригес
#QuentinTarantino
#КвентинТарантино
#CheechMarin
#ЧичМарин
#СтивБушеми
#SteveBuscemi
#ДэнниТрехо
#DannyTrejo
«Моего лирического героя охарактеризовать очень просто: он появляется, даёт всем под зад и уходит».
Сегодня исполнилось 63 года Квентину Тарантино.
#ВИДЕОТЕКА
#QuentinTarantino
#КвентинТарантино
#ReservoirDogs
#БешеныеПсы
#PulpFiction
#КриминальноеЧтиво
#Desperado
#Отчаянный
#JackieBrown
#ДжекиБраун
#KillBill
#УбитьБилла
#DjangoUnchained
#ДжангоОсвобожденный
#TheHatefulEight
#ОмерзительнаяВосьмерка
#OnceUponATimeInHollywood
#ОднаждыВГолливуде