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

Резултати

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

Пребарај: #eucentralasia

当前筛选 #eucentralasia清除筛选
EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #1244 · 02.04.2025 г., 10:05

Еуропалық Одақ - Орталық Азия алғашқы саммиті 4 сәуір күні Самарқанда қаласында өтеді. Бұл жоғары деңгейдегі кездесу Еуропалық Одақ пен Орталық Азия арасындағы қатынастарды нығайтуға және аймақтық ынтымақтастықты тереңдетуге мүмкіндік береді. 🇪🇺🇰🇿🇰🇬🇹🇯🇹🇲🇺🇿 The first-ever EU-Central Asia Summit will take place on 4 April in Samarkand, bringing together the leaders of the EU and the five Central Asian countries. This high-level meeting will be a key moment to strengthen EU-Central Asia relations and deepen regional cooperation. #EUCentralAsia#EUCentralAsiaSummit#EU4CA

NazarMedia.kz

@nazarmedia_kz · Post #215 · 03.04.2025 г., 13:15

Еуропалық Одақ - Орталық Азия алғашқы саммиті 4 сәуір күні Самарқанда қаласында өтеді. Бұл жоғары деңгейдегі кездесу Еуропалық Одақ пен Орталық Азия арасындағы қатынастарды нығайтуға және аймақтық ынтымақтастықты тереңдетуге мүмкіндік береді. 🇪🇺🇰🇿🇰🇬🇹🇯🇹🇲🇺🇿 The first-ever EU-Central Asia Summit will take place on 4 April in Samarkand, bringing together the leaders of the EU and the five Central Asian countries. This high-level meeting will be a key moment to strengthen EU-Central Asia relations and deepen regional cooperation. #EUCentralAsia#EUCentralAsiaSummit#EU4CA

EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #1035 · 27.11.2024 г., 05:06

Terhi Hakala, the European Union Special Representative for Central Asia, has concluded her farewell visit to #Kazakhstan. During her trip, Ambassador Hakala engaged in discussions with high-ranking government officials and met with civil society and media representatives. These meetings underscored the strong partnership between the European Union and Kazakhstan and reaffirmed the shared commitment to fostering regional cooperation and mutual understanding. 🇪🇺🇰🇿 Еуропалық Одақтың Орталық Азия бойынша Арнайы Өкілі Терхи Хакала Қазақстанға қоштасу сапарын аяқтады. Елші Хакала сапар барысында жоғары лауазымды мемлекеттік қызметкерлермен, азаматтық қоғам және БАҚ өкілдерімен кездесті. Бұл кездесулер Еуропалық Одақ пен Қазақстан арасындағы берік серіктестікті атап өтіп, өңірдегі ынтымақтастық пен өзара қарым-қатынасты нығайтуға деген ортақ ниетті растайды. #EU4CA#EUCentralAsia#EUinKZ#CentralAsiaMatters