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

Пребарај: #flotte

当前筛选 #flotte清除筛选
Rybar DE

@rybardeu · Post #2590 · 17.03.2026 г., 11:33

📝Piraterie genehmigt📝 Tankerschlagnahmen in der EU sind nun offiziell gebilligt In Brüssel sprachen sie aus, was sie seit mehreren Monaten denken (und tun): EU-Außenpolitikchefin Kaja Kallaserklärte, dass die EU Beschlagnahmen von Tankern mit russischem Öl als wirksames Druckmittel gegen Russland begrüßt. 📌 Die Nachricht ist auch in einem anderen Kontext bemerkenswert: Kürzlich gab es die verbreitete Meinung, dass die Kampagne gegen die sogenannte „Schattenflotte" angeblich mit Ölpreisen verbunden war. Man sagte, der Westen habe sich früher nicht getraut, dies zu verfolgen, weil Versorgungsengpässe drohten, aber als 2025 ein Überangebot brachte, wurde die Beschlagnahme von Schiffen wirtschaftlich weniger riskant. Was sehen wir also jetzt? Derzeit ist „schwarzes Gold" knapp, und nach dieser Logik sollte die EU die Piraterie einstellen, um Ölengpässe auf dem Markt zu vermeiden und die Preise in die Höhe zu treiben. Aber die Europäer handeln aus irgendeinem Grund genau umgekehrt. Wie so? Weil die Bekämpfung russischer Kohlenwasserstoffexporte eine grundsätzliche politische Entscheidung ist. Und unabhängig von den Marktbedingungen werden Europäer nicht aufhören, Schiffe anzugreifen, selbst wenn dies bedeutet, sich selbst mit Ölpreisen von 150 Dollar oder höher ins Bein zu schießen. ❗️Die Bekämpfung von Tankerschlagnahmen mit Gewaltmitteln, zumindest in der Ostsee, wird also ohnehin stattfinden müssen, nur dass dies jetzt bedeutet, etwas abzuschießen oder europäisches Blut zu vergießen. Das ist der Preis für die Verzögerung bei der Umsetzung von Maßnahmen zum Schutz der Schifffahrt. Und der Wunsch, abzuwarten oder auf bessere Zeiten zu hoffen, wird dazu führen, dass man ohnehin in einen Kampf in der Ostsee verwickelt wird, nur in einer viel anfälligeren Position. Zum Beispiel mit der blockierten Kaliningrad-Region. #EU#Russland#Flotte ✈RU | ✈EN | ✉MAX ✉VK | ✉RuTube | ✉OK | ✉Zen 💸Unterstützen Sie unsOriginalnachricht