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 слични објави

Пребарај: #2027modelyear

当前筛选 #2027modelyear清除筛选

💥 Взгляд в будущее: дебютировал новый Triumph Speed Twin 1200 Cafe Racer Edition 2027 модельного года‼️ ✏️ Энтузиастам классических мотоциклов на заметку! Только что произошла утечка первых изображений и информации о будущей новинке — Triumph Speed Twin 1200 Cafe Racer Edition 2027 года. Это не просто обновление, а специальная, ориентированная на стиль версия популярного «спидтвина», которая отдает дань уважения золотой эре кастомной культуры. ✔️ Что мы видим на фото? · Чистая эстетика кафе-рейсера: Мотоцикл получил эффектный полуобтекатель на передней фаре, который мгновенно меняет его характер, делая более агрессивным и стремительным. · Новая цветовая схема: На изображениях представлена комбинация «Карбоновый черный» с контрастными полосами и графикой в красно-оранжевых тонах — очень динамично и современно. · Элементы в стиле рейсинг: Обратите внимание на цифровую белую круговую шкалу на спидометре, которая напоминает классические тахометры гоночных машин. Также видны новые кожухи амортизаторов и профилированное сиденье, завершающие образ. ⚙️ Что под капотом (ожидаемое)? Хотя это «первый взгляд», а не официальный анонс, логично предположить, что в основе будет лежать знаменитый 1200-кубовый параллельный twin High Power от современного Speed Twin. Это означает примерно 100 лошадиных сил, обильный крутящий момент и современную электронику. Скорее всего, эта версия получит более спортивную настройку подвески и, возможно, более низкий руль для аутентичной посадки кафе-рейсера. ➡️ Ожидайте официальных деталей и спецификаций ближе к концу 2026 года. А пока — делитесь мнением в комментариях! Ждете такую версию? Как вам дизайн? #Triumph#SpeedTwin#CafeRacer#NewBike#FirstLook#MotorcycleNews#FutureModel#2027ModelYear#ClassicBike#ModernClassic#Мотоцикл#Триумф#КафеРейсер#НоваяМодель