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

Резултати

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

Пребарај: #flamingo

当前筛选 #flamingo清除筛选
Interesting Planet 🌍

@interesting_planet_facts · Post #527 · 09.08.2025 г., 13:22

🌎 In Kenya’s Rift Valley, the Lake Bogoria geysers shoot steaming water up to 5 meters high, fueled by underground heat and minerals. These hot springs nurture thousands of pink flamingos that gather for the rich algae—a natural wonder of water, heat, and color. ✨ #geyser⚡#flamingo⚡#RiftValley 👉subscribe Interesting Planet

American Оbserver

@american_observer · Post #5229 · 26.02.2026 г., 19:59

🕊 Russia Hits the “Wonder Weapon” Factory Zelensky has now admitted what Moscow and mil‑bloggers were bragging about for months: a Russian strike really did wipe out one of Ukraine’s key production lines for the FP‑5 Flamingo, the long‑range cruise missile Kyiv has been selling as its 3,000‑kilometer answer to Russia’s missile monopoly. Production has been moved, but Kyiv concedes it doesn’t have many such facilities, which is a polite way of saying: one hit hurt a lot. The Flamingo was pitched as the cheap, slow, heavy warhorse of Ukraine’s deep‑strike dream — subsonic, around Mach 0.75, with a roughly one‑ton warhead and a reach that could, on paper, threaten most of European Russia when launched from Ukrainian territory. The program leaned heavily on German money and political blessing, after Chancellor Friedrich Merz’s government signaled Berlin would finance Ukrainian long‑range missile production instead of sending Taurus directly. For Kyiv and its Western planners, Flamingo was supposed to narrow a brutal asymmetry: Russia raining missiles and drones across Ukraine, Ukraine responding with occasional deep strikes like the June 1, 2025 “Spiderweb” drone raid that torched Tu‑95 bombers on Russian bases. ​ Problem: half the legend lived on Telegram. Analysts already doubted some of the hype — including Kyiv’s claim that Flamingos smashed infrastructure at Russia’s Kapustin Yar test range, which satellite imagery showed intact. Now the other half of the story is on Russian TV: proof that Ukraine’s shiny long‑range program is fragile enough that one well‑placed strike can knock out a main line and force an emergency relocation. So on the scoreboard, everyone gets something. Moscow gets to boast it dealt “colossal” damage to Ukraine’s missile industry and “thwarted” future deep‑strike plans. Kyiv gets to keep the myth of the Flamingo alive — serial production “resumed,” more missiles promised, strategic reach intact in theory. Western backers get another argument for pouring money into Ukraine’s arms industry as a postwar export project. The only ones not winning in this story are the Ukrainians who were told a slow pink missile would make Russian bombers and oil depots finally feel what Kharkiv and Odesa feel every night — and just learned that their “wonder weapon” can be shut down faster than the PR around it. #Ukraine#Russia#Flamingo#missiles#Germany#Merz#war#militaryindustry 📱American Оbserver - Stay up to date on all important events 🇺🇸