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

Пребарај: #guľajpole

当前筛选 #guľajpole清除筛选
Casus Belli maps

@casusbellimaps · Post #10777 · 01.04.2026 г., 19:26

📝Obnovenie ofenzívy📝 situácia na východnom zaporozskom smere Časti skupiny vojsk „Východ“ postúpili na styku Dnepropetrovskej a Zaporozskejoblasti. Nedávne rozsiahle útoky nepriateľa síce na určitý čas spomalili postup skupiny vojsk „Východ“, postupne však vyprchali. ➡️Ruská vlajka je rozvinutá v Bojkove. Práve cez túto dedinu nepriateľ útočil v Ternovatom a okolí. Ruské jednotky tak obnovili stratenú kontrolu a výrazne postúpili, posilnili pozície za riekou Gajčur. ➡️Ak sa bojovníkom 64. samostatnej motostreleckej brigády 36. armády podarí upevniť a udržať dedinu, ruské jednotky získajú možnosť ďalej rozvíjať ofenzívu na západ, akoby obkolesujúc okupovanú časť Zaporozskejoblasti zo severu. ➡️Vozdvizhevku naďalej „spracovávajú“ leteckými, delostreleckými a dronovými údermi: z tejto dediny OSU útočili ako na Roždestvenskoje, tak aj na Priluky. Južnejšie pokračujú boje na okraji VerchnejTersy, ako aj útoky VKS RF v oblasti Guľajpola, Volšebnogo a Mírnogo. ❗️Napriek istému náznaku zvratu má nepriateľ zatiaľ dosť rezerv na nové protiútoky, preto hrozba na smere neustúpila. Ukrajinským formáciám je o niečo jednoduchšie používať taktiku presakovania malými skupinami, jednoducho kvôli tým istým agrodronom a stabilnému spojeniu vo forme Starlink. 📌Rozsiahle útoky s hlbokými zájazdmi, podobné februárovej ofenzíve OSU, sa môžu zopakovať. Hoci v poslednom čase boli úspechy len tam, kde VKS RF uvoľňovali línie „na úver“: inde si lámali zuby, ako je vidieť na príklade „Východu“ a „Centra“. Ak máte doplnky k situácii, chcete, aby sme zvýraznili úspechy vášho oddielu — vždy nám môžete napísať do bota spätnej väzby @rybar_feedback_bot 📍Mapa vo vysokom rozlíšení 📍Anglická verzia 📍Online mapy sú dostupné cez predplatné na map.rybar.ru #Guľajpole#daiʒest#mapa#Rusko#Ukrajina ⭐️@rybar spoločne s @voin_dv ✈RU | ✈EN | ✉MAX ✉️VK | ✉️RuTube | ✉️OK | ✉️Dzen 💸Podporte nás 🌐Zdroj:@rybar 🔗Link:https://t.me/rybar/79116 #Rybar https://t.me/casusbellilive Truth over narrative 24/7 WEB | CONTACT | SHOP 📅Vytvorené: 2026-04-01 19:30:10 ✏️Aktualizované: 2026-04-01 20:37:59

Casus Belli maps

@casusbellimaps · Post #11023 · 09.04.2026 г., 17:45

📝Boj za Gajčur📝 Na východnom-západnom smere Záporožia pokračujú ťažké boje. Ukrajinské formácie naďalej nevzdávajú pokusy o preniknutie do Dnepropetrovskejoblasti. Na internete sa občas objavujú archívne zábery z odrážania útokov a zničenia nepriateľskej techniky, ktoré sa často interpretujú ako najčerstvejšie. Hoci sa stále stretávajú jednotlivé skupiny prenikajúcich OSU, ich aktivita postupne ustáva. ➡️Ruské vojská sa naopak venujú obnovovaniu pozícií na severnom krídle. Bojovníci postupne rozširujú kontrolovanú zónu a vytvárajú podmienky pre ďalší postup vpred. Súčasne pokračuje čistenie jednotlivých osád od prieskumných skupín a preživších ukrajinských útočníkov z predchádzajúcich výpadov. Podporné skupiny, ktoré sa snažia pomôcť OSU, sú rýchlo zničené na prístupoch. ➡️Za Gajčurom na západnom krídle smeru pokračuje ofenzíva ruských jednotiek, ktoré po odrazení útokov pôsobia na pomerne širokom úseku frontu. Sú lokálne úspechy v okolí Bojkova a Roždestvenského. Na tomto úseku prebieha aktívne ničenie nepriateľskej logistiky. Boje prebiehajú na prístupoch k Vozdvizjevke a VerchnejTerse, osady sú obchádzané zo severu a západu, aby sa zablokovali OSU v dedinách. Na juhu sa stretávania posúvajú smerom k Volšebnému a Guľajpolskému. ➡️Rovnako ako predtým, ofenzíva prebieha silami malých skupín, ktoré našťastie takmer nezachytávajú zábery objektívnej kontroly pred oslobodením ďalšej osady. Množstvo dronov výrazne znižuje tempo postupu, a útoky veľkými silami, ako ukazuje prax, už nefungujú, okrem veľmi zriedkavých prípadov. 📌 Stabilný postup vo východnej časti Záporožskejoblasti, ktorá je pod kontrolou nepriateľa, umožní obísť zo severu Orechov a následne konečne oslobodiť túto osadu. Toto mesto je trn v oku postupujúcich ruských vojsk, kontrola nad ním umožní uľahčiť situáciu na susednom Západnom-záporožskom smere, kde OSU postupujú s početnou prevahou. Ak máte doplnky k situácii, chcete, aby sme zvýraznili úspechy vášho oddielu — vždy nám môžete napísať do spätnoväzbového bota @rybar_feedback_bot 📍Mapa vo vysokom rozlíšení 📍Anglická verzia 📍Online mapy sú dostupné s predplatným na map.rybar.ru #Guľajpole#daiǵest#mapa#Rusko#Ukrajina 🌐Zdroj:@rybar 🔗Link:https://t.me/rybar/79375 #Rybar https://t.me/casusbellilive Truth over narrative 24/7 WEB | CONTACT | SHOP 📅Vytvorené: 2026-04-09 19:32:09