Установить свойства виджета в 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
🟢¡EL THE INTERNATIONAL ESTÁ COMPLETO!🤯🔥
-Estos son los 16 equipos que estarán presentes en el 🏆The International 2025 😮
🔹TODOS ELLOS TIENEN EN MENTE UN SOLO OBJETIVO, LLEVARSE EL AEGIS Y CORONARSE CAMPEONES. 😤
-¿Quién crees que se llevará el TI este año? 🤔
#Tinbet#esports#dota2#TheInternational
@Info_Dota2
🟢¡NIGMA GALAXY CLASIFICA A SU PRIMER INTERNATIONAL!🤯🔥
La escuadra de 🇯🇴Nigma Galaxy logró derrotar a 🇪🇺OG en la final de Lower Bracket y se lleva el ÚLTIMO CUPO al 🏆The International 2025 😮
🔹Con este resultado, la organización de Nigma Galaxy clasifica a su primer THE INTERNATIONAL luego de 6 largos años de su creación. 🤫
El roster es:
1. 🇲🇾Ghost
2. 🇵🇰Sumail
3. 🇱🇧No!ob
4. 🇱🇧Omar
5. 🇱🇧GH
Y si, tristemente OG se queda fuera del THE INTERNATIONAL por tercer año consecutivo. 😿
#Tinbet#esports#dota2#TheInternational
@Info_Dota2
Hasta ahora los picos de view de este #TI2025 segun Esports Charts .... curiosamente todas éstas partidas que fueron las más vistas ocurrieron el mismo día una detrás de la otra
#TheInternational#dota2
@Info_Dota2
Valve ha anunciado oficialmente la lista de equipos que han recibido invitaciones directas al torneo más importante del año: The International 2025. En total, ocho equipos fueron invitados directamente:
✔️ Team Liquid
✔️ PARIVISION
✔️ BetBoom Team
✔️ Team Tidebound
✔️ Gaimin Gladiators
✔️ Team Spirit
✔️ Team Falcons
✔️ Tundra Esports
Las ocho plazas restantes se definirán a través de los clasificatorios regionales. 🌎
#Dota#Esports#Theinternational#Valve
@Info_Dota2
🟢¡EL CEREBRO DEL THE INTERNATIONAL! 🤯🔥
Tras su coronación como Campeón del 🏆THE INTERNATIONAL 2025 con la escuadra de 🇯🇴Falcons. El canadiense "🇨🇦AUI_2000" se convierte en el primer atleta de dota 2 en ganar 3 ediciones del THE INTERNATIONAL. 👀
✅ CAMPEÓN 🏆The International 2015 con 🇺🇲EVIL GENIUSES (Jugador)
✅ CAMPEÓN 🏆The International 2022 con 🇪🇺TUNDRA ESPORTS (Coach)
✅ CAMPEÓN 🏆The International 2025 con 🇯🇴FALCONS (Coach)
🔹Para ti ¿Cuenta como el primer TRICAMPEÓN de TI o es necesario ser jugador para ser merecedor del título? 🤔
#Tinbet#esports#dota2#TheInternational#ti2025
@Info_Dota2
🟢¡LOS HALCONES SE PROCLAMAN CAMPEONES DEL 🏆THE INTERNATIONAL!🔥
-🇯🇴FALCONS ejecuta un juego magnífico de pick-offs en el último mapa y consigue derrotar a 🇨🇳Xtreme Gaming en esta GRAN FINAL 🫡
🔹FALCONS reclama su primer AEGIS DE LOS CAMPEONES 😲
-SKITER Y SNEYKING son oficialmente BICAMPEONES del THE INTERNATIONAL 👏😊
AME sigue siendo el REY SIN CORONA 😭
#Tinbet#esports#dota2#TheInternational#ti2025
@Info_Dota2
🟢¡ASÍ QUEDAN LAS LLAVES TRAS EL PRIMER DÍA DE COMPETENCIA EN LOS PLAYOFFS DEL 🏆The International 2025 !🔥
Mañana arranca el segundo día con la serie de eliminación entre 🇧🇷HEROIC🇵🇪 vs 🇪🇺TUNDRA a las ⏰04:00 AM 🫡
-¿Cómo les fue con sus predicciones? 🤔
#Tinbet#esports#dota2#TheInternational#ti2025
@Info_Dota2
🟢¡NO TENDREMOS TRI-CAMPEONATO!😱🔥
🏆The International - Elimination Stage
-🇯🇴Team Falcons consigue derrotar a 🇷🇺Team Spirit en el segundo mapa y es el ÚLTIMO EQUIPO en CLASIFICAR a los PLAYOFFS de este 🏆The International 2025 😉
🔹🇷🇺Team Spirit, el favorito para el tricampeonato, queda ELIMINADO del torneo 👀
⚔️Eso es todo mis reyes, de aquí no hay dota hasta el 11 donde comienzan los PLAYOFFS. 🙂
#Tinbet#esports#dota2#TheInternational#ti2025
@Info_Dota2
🟢¡RESUMEN DEL DÍA 2!🔥
Terminó el segundo día de competencia en el 🏆The International y esta Swiss Stage ya tiene a su primer eliminado, la escuadra de "🇵🇭Nemesis" 🫡
✅🇨🇳Xtreme Gaming y 🇨🇳Tidebound dominan la Swiss Stage. Mañana se deciden los playoffs.
🔹🇺🇦NA'VI, 🇯🇴Nigma, 🇵🇭BOOM y 🇺🇸Wildcard se jugarán la vida el día de mañana en las series de eliminación. De ellos 4, 2 quedarán eliminados.
#Tinbet#esports#dota2#TheInternational#ti2025
@Info_Dota2
𝐋𝐎 𝐒𝐔𝐅𝐑𝐄 𝐂𝐑𝟏𝐓 🥺💔
Andreas Franck "Cr1t-" Nielsen, support de Team Falcons, comentó en su página de X sobre la derrota de su equipo en The International 2024.
"Durante varios días he estado digiriendo todo lo que sucedió. Quiero agradecer a todos los que continúan apoyándome, así como a mis compatriotas que me me animaron mucho.
Realmente quería ganar este torneo. Nunca he deseado en mi vida, y probablemente no desee, ganar un torneo como este The International. Pero no nos rendiremos, espero con ansias la oportunidad de competir nuevamente por la victoria el año que viene."
#valve#theinternational#esb#Dota2#esports
@Info_Dota2
🟢¡EL 🏆THE INTERNATIONAL 2025 YA TIENE FECHA Y LUGAR! 🤯🔥
-A través de un blog en la página oficial de Dota 2, Valve anunció que el 🏆THE INTERNATIONAL de este año se jugará en las maravillosas tierras de Hamburgo-Alemania 🇩🇪👀
🔹Recordemos que el primer The International de la historia se jugó en Alemania. 😉
🔸Esta edición contará con 16 equipos que se dividirán entre invitados directos y clasificados regionales.
📅El torneo iniciará en la primera semana de Septiembre, el evento principal será entre el 11 y 14 de ese mes en el Barclays Arena.
#Tinbet#esports#dota2#TheInternational#Hamburgo
@Info_Dota2
𝐘𝐀𝐓𝐎𝐑𝐎 𝐄𝐒 𝐎𝐓𝐑𝐎 𝐋𝐄𝐕𝐄𝐋 👏🏻🔝
El midlaner de Gaimin Gladiators, Quinn "Quinn" Callahan, habló sobre lo que piensa del ex hard carry de Team Spirit. ⚔️
"Yatoro es uno de los mejores jugadores de todos los tiempos. Es muy talentoso y seguro. Será triste competir en torneos sin él, ya que tiene mucho talento y habilidad. Es divertido verlo jugar. Es el Miracle- de nuestra época y es el único jugador en nuestra era que se puede comparar con Amer."
¿Y tú, extrañarás estás de acuerdo con Quinn?
#Gaming#Dota#EsportsChallenge#esb#esports#theinternational#valve
@Info_Dota2