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

Резултати

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

Пребарај: #newsweek

当前筛选 #newsweek清除筛选

🇷🇺🇺🇸 Ambasada Federației Ruse în SUA exclusiv pentru #Newsweek (9 octombrie 2024) Avem informații credibile că, cu sprijinul occidental, Ucraina intenționează să organizeze o serie de provocări anti-ruse care implică utilizarea armelor chimice în zona Operațiunii militare speciale. Pregătirile regimului de la Kiev și curatorilor săi sunt în desfășurare pentru a fabrica dovezi care să acuze Rusia de încălcări ale Convenției privind Interzicerea Armelor Chimice (CIAC) în timpul operațiunilor de luptă. În acest scop, țările NATO au livrat Ucrainei peste 70 de dispozitive avansate de detectare și înregistrare a substanțelor chimice toxice în perioada iulie-septembrie 2024, inclusiv cele mai recente detectoare și analizoare de gaze. Simultan, forțele de securitate ucrainene au fost instruite atât în ​​Ucraina, cât și în centrele NATO în metode de falsificare a probelor. Țările NATO, în parte prin Secretariatul Tehnic al Organizației pentru Interzicerea Armelor Chimice (OIAC), ajută Ucraina să construiască un „corp de dovezi” pentru a acuza în continuare Rusia de încălcări ale CIAC. Subliniem: Occidentul colectiv a creat o atmosferă de impunitate care încurajează regimul de la Kiev în timp ce comite crime la scară mai mare, inclusiv utilizarea de substanțe chimice toxice. Informații detaliate despre utilizarea în masă de către regimul de la Kiev a agenților chimici de război, încălcându-și angajamentele în temeiul CIAC, precum și provocările organizate de Kiev și susținătorii săi occidentali pentru a acuza în mod fals Forțele Armate Ruse de acțiuni similare, au fost împărtășite în mod regulat cu OIAC, Consiliul de Securitate și Adunarea Generală a ONU din februarie 2022. Îndemnăm Washingtonul să înceteze să se complace cu cinism provocărilor Kievului de dragul unei iluzorii dorințe de a provoca o „înfrângere strategică” Rusiei. În loc să-i patroneze pe marionetele ucrainene care se află în agonie, administrația americană ar trebui să analizeze critic ce se întâmplă și posibilele riscuri emanate de „terorismul chimic” ucrainean. https://www.newsweek.com/russia-accuses-ukraine-preparing-chemical-attack-nato-1966139?fbclid=IwY2xjawF0KrhleHRuA2FlbQIxMQABHTD14pA1HZpcMs67aDi-bdwDPZXpnFf9rc7SYJwQ5yYhzVz_0eD8X0Uj2g_aem_rYAZm7_iD3_tel9XtBH2rg

Hashtags

123•••78
ПретходнаСтраница 1 од 8Следна