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

Резултати

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

Пребарај: #route

当前筛选 #route清除筛选
Лёгкое небо

@legkoenebo · Post #4057 · 30.06.2025 г., 22:14

Почему самолёты не летают «прямо» в небе? ✈️ 📌Если взглянуть на маршрут, особенно на дальнемагистральных рейсах, он почему-то выглядит изогнутым. Например, рейс из Москвы в Лос-Анджелес (если бы таковой был) летит не напрямую на запад, а через север — почти задев полюс. Но почему так? Это связано с геометрией планеты. ⏺Земля — шар, и кратчайшее расстояние между двумя точками на сфере — это не прямая линия на карте, а дуга. 🌍 Аналогичный принцип происходит с глобусом: необходимо натянуть нитку между двумя городами — она всегда будет идти дугой. Именно по такому маршруту и строятся авиарейсы. ⏺В Арктике и над Тихим океаном самолёт может даже перепрыгнуть через дату — сегодня вылетел, а прилетел вчера. Лёгкое небо #aviation#route

Voir de ses propres yeux

@voir_yeux · Post #12624 · 22.04.2026 г., 18:34

🇧🇬 En Bulgarie, deux personnes ont été tuées et neuf autres blessées dans un accident de la route impliquant un bus ukrainien, rapporte la télévision nationale bulgare. Le bus touristique s’est arrêté en raison d’un manque de carburant, et lorsque les passagers sont descendus, il est reparti en marche arrière de manière incontrôlée, les percutant. Les faits se sont produits près du poste-frontière de Malko Tarnovo, non loin de la frontière bulgaro-turque. #accident#victimes#route