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

Пребарај: #humanitariancooperation

当前筛选 #humanitariancooperation清除筛选

🌐🤝Περισσότεροι από 2️⃣ χιλιάδες εκπρόσωποι από τη Ρωσία και το εξωτερικό — στο Διεθνές Φόρουμ Συνεργασίας στη Μόσχα! Στις 26 Οκτωβρίου στη Μόσχα πραγματοποιήθηκε το Διεθνές Φόρουμ Συνεργασίας, αφιερωμένο στα 100 χρόνια της λαϊκής διπλωματίας. Το φόρουμ συγκέντρωσε προσωπικότητες από τον χώρο της επιστήμης, του πολιτισμού, της διπλωματίας και εκπροσώπους οργανώσεων της κοινωνίας από πάνω από 100 χώρες. 🇬🇷 Η Ελλάδα εκπροσωπήθηκε από τον κ. Δημήτρη Πατέλη — διδάκτορα και καθηγητή φιλοσοφίας των επιστημών στο Πολυτεχνείο Κρήτης. Κύρια θέματα του Φόρουμ: 🔹 λαϊκή διπλωματία & διεθνής συνεργασία 🔹 πολιτιστική αλληλεπίδραση των χωρών 🔹 διαθρησκειακός διάλογος και ανθρωπιστικές πρωτοβουλίες 🔹 διατήρηση ιστορικής μνήμης & παραδοσιακών αξιών 📌 Κατά τη διάρκεια του Φόρουμ, το Ροσσοτρούντνιτσεστβο ανακοίνωσε την επέκταση του δικτύου των συνεργαζόμενων «Ρωσικών σπιτιών» σε χώρες της Αφρικής και της Ασίας. 🔗 Διαβάστε περισσότερα για την εκδήλωση εδώ ➡️https://clck.ru/3PykN5 🌐🤝Более 2 тысяч представителей России и зарубежных стран — на Международном форуме сотрудничества в Москве! 26 октября в Москве прошёл Международный форум сотрудничества, посвящённый 100-летию народной дипломатии. Форум объединил лидеров общественного мнения, учёных, деятелей культуры, дипломатов и космонавтов более чем из 100 стран мира 🇬🇷 Грецию на форуме представил Димитриос Пателис — доктор, профессор философии Критского политехнического университета. Ключевые темы форума: 🔹 народная дипломатия и международное сотрудничество 🔹 культурное взаимодействие стран 🔹 межрелигиозный диалог и гуманитарные инициативы 🔹 укрепление исторической памяти и традиционных ценностей 📌 В рамках форума Россотрудничество объявило о расширении сети партнёрских «русских домов» в ряде стран Африки и Азии. 🔗 Читайте подробнее о форуме здесь ➡️https://clck.ru/3PyahF #МеждународныйФорумСотрудничества#Россотрудничество#РусскийДом#Greece#PublicDiplomacy#Россия#ГуманитарноеСотрудничество#НароднаяДипломатия#CultureDialogue#Moscow #ΔιεθνέςΦόρουμΣυνεργασίας#ΡωσικόΣπίτι#Ροσσοτρούντνιτσεστβο#ΛαϊκήΔιπλωματία#Ελλάδα#Ρωσία#ΠολιτιστικήΔιπλωματία#HumanitarianCooperation#Moscow