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

Резултати

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

Пребарај: #mamardashvili

当前筛选 #mamardashvili清除筛选
Futplanet

@Fut_planet · Post #11923 · 05.07.2024 г., 13:53

Mamardashvili le cierra las puertas al Bayern Múnich😬 El futuro del portero georgiano del Valencia está en el aire y en una entrevista reciente a Sky Alemania ha dicho lo siguiente sobre un posible fichaje al Bayern de Múnich: "El Bayern sigue teniendo al mejor portero del mundo. Por lo tanto, actualmente no es posible ir allí. Solo iría allí si voy a jugar. Si no juego, entonces no". @Fut_planet⚜️#Mamardashvili🧤 #Bayern🇩🇪

🏆 Info 288 - DEPORTES

@info288_deportes · Post #35063 · 28.08.2024 г., 07:46

⚽️Valencia El Liverpool hace oficial el fichaje de Mamardashvili y se quedará cedido en el Valencia#Valencia#Mamardashvili#Liverpool Mamardashvili ya es nuevo jugador del Liverpool tal y como ha anunciado oficialmente el club inglés. El portero georgiano superó el lunes un reconocimiento médico de casi cinco horas con dos emisarios de los Reds en un centro especializado cercano a la ciudad deportiva de Paterna que era el último paso que faltaba para que ambos clubes cruzaran la documentación ya firmada El Valencia cierra el traspaso de Mamardashvili por una cantidad superior a los 35 millones entre fijo y variables - y que logró desbloquearse después de encontrar la fórmula para que el portero georgiano se quede una temporada cedido en Mestalla. El Liverpool cuenta con Alisson Becker -por el que pagó 73 millones a la Roma en 2018- como guardameta titular que además tiene contrato hasta 2026. Pero llevaba tiempo buscando un sustituto de garantías tanto para un presente inmediato -al guardameta brasileño le llegaron grandes ofertas de Arabia Saudí- como para un futuro de una o dos temporadas. Mamardashvili ve así cumplido su deseo de firmar por un gran club que juega competiciones continentales y aspira a títulos -además de su importante mejora salarial- y tiene la posibilidad de continuar una temporada más en el Valencia tal y como era su deseo. Para el Valencia también es una operación satisfactoria. Porque adelanta una venta que presupuestariamente iba a ser necesaria en este ejercicio -se cierra en junio de 2025- o en el próximo -junio de 2026- y no solo mantiene el nivel de un puesto clave en un equipo, sino que ha reforzado la competencia con la llegada de Dimitrievski. De hecho, el meta macedonio fue el primer refuerzo del verano en previsión de una posible salida de Mamardashvili. https://www.marca.com/futbol/valencia/2024/08/27/66ccca44ca4741527c8b4576.html 🏆@Info288_deportes