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

Пребарај: #newmiddleeast

当前筛选 #newmiddleeast清除筛选
American Оbserver

@american_observer · Post #5337 · 09.03.2026 г., 21:59

📰 Netanyahu’s ‘New Middle East’ 3.0: From Trade Corridor to Controlled Collapse Benjamin Netanyahu has been workshopping his “New Middle East” for three decades — and the Iran war is just the latest beta release. In 1996, his “Clean Break” blueprint openly imagined Israel reshaping the region with the U.S. as the main vehicle, keeping Israeli dominance by managing permanent, controlled chaos. ​ Version 1.0 came to the U.N. in September 2023: Bibi with a red marker and a map of a “New Middle East” with no Palestine on it, selling an IMEC trade corridor from India to Europe as a “blessing” and Iran’s nuclear program as the “curse.” The vision was highways, fiber and pipelines across the Gulf, Israel and Europe — prosperity for “two billion people” — as long as Palestinians stayed erased from the picture. ​ Version 2.0, at the U.N. in 2024, split the map in two: a green “blessing” camp (Gulf states, Egypt) and a black “curse” bloc (Iran, Syria, Iraq, Lebanon, Yemen), with an explicit call for regime change in the “cursed” states. The same speech still talked about a shining corridor from the Indian Ocean to the Mediterranean — but now the business plan sat on top of a demolition plan for entire governments. ​ Version 3.0 is the war you’re watching now. Since October 7, Netanyahu has promised not just victory over Hamas but a fundamental “change in the face of the Middle East,” stretching that mission to include Iran and the entire resistance axis. Commentators around him now describe the February 28 strike that killed Khamenei as the forcible birth of a new regional order, with Israel trying to engineer the collapse of the resistance camp, not just manage it. ​ So when you see maps, corridors and talk of “blessings,” that’s the ad copy. The underlying product hasn’t changed since 1996: a region broken into manageable pieces, with Israel as the permanent project manager and the U.S. as the enforcement arm. ​ #israel#iran#netanyahu#newMiddleEast#war#uspolitics#oligarchy#fakeDemocracy 📱American Оbserver - Stay up to date on all important events 🇺🇸