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

Пребарај: #weloveclc

当前筛选 #weloveclc清除筛选
Co-Learning Center

@colearninguz · Post #78 · 27.12.2020 г., 08:14

📣Siz ham ishtirok etdingizmi? Esingizda boʻlsa, 5-oktabr kuni Co-Learning Center Backend, Frontend va Grafik Dizayn darslariga start berilgan edi. Mana zum deganda oʻquvchilar ushbu kurslarni ham tamomlashdi. Yuqoridagi rasmlar orqali bitiruv marosimi qay darajada koʻtarinki ruhda oʻtganini koʻrishingiz mumkin. ✅ Yana bir bor yodingizga solamiz, ushbu kurslar Toshkent shahridagi INHA universiteti talabalari uchun Co-Learning Center mutaxassislari tomonidan mutlaqo bepulga oʻtildi. 🔥 Oldinda sizni bundanda ajoyib yangiliklar kutmoqda! Bizdan uzoqlashmang! #weloveCLC#CLC_uz @colearninguz

Co-Learning Center

@colearninguz · Post #67 · 27.12.2020 г., 08:08

🥳 Uraaa, bizning birinchi SMM kursimiz qaldirgʻochlari muvaffaqiyatli tamomlashdi! 🎉 Doʻstlar, bitiruvchilarimizning marosim oldidan tashkillashtirgan kichik intervyusi bilan ushbu videoda tanishishingiz mumkin! Eslatib oʻtamiz, ushbu kurslar Toshkent shahridagi INHA universiteti ichidagi Co-Learning Markazida boʻlib oʻtdi va mutlaq bepulga amalga oshirildi. Bizni kuzatishda davom eting, tez kunda sizlarni “super” yangiliklar kutmoqda! #weloveCLC#CLC_uz @colearninguz

Co-Learning Center

@colearninguz · Post #219 · 16.07.2021 г., 12:30

📅Kuni kecha Co-Learning Center 2 ta kurs nihoyasiga yetdi. Bu safar kurslarimizga nafaqat Inha balki boshqa o'quv muassasalaridan o'quvchilar qabul qildik. ✅ Yakunlangan SMM Specialist.3 va Flutter - mobile development kurslarida natija borasida ham o'sish sezildi. Mentorlarimiz Sadriddin Abduraximov va Abdurahim Abdullaev vazifalariga professional yondashishdi. Endigi kurslarimiz qaysi yo'nalishda bo'lishini xohlaysiz? Izohlarda javobingizni qoldiring 👇 Sizga foydali bilim ulashishdan doimo mamnunmiz — @colearninguz💛 #weloveCLC#flutter#SMM#mobile_development#graduation#lucky