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

Пребарај: #sanoye

当前筛选 #sanoye清除筛选
Sandiq

@sandiqchamiz · Post #104 · 18.04.2026 г., 19:37

#adabiyot HUSNI TA'LIL – “chiroyli dalillash” demak. Unda shoir biror holatga asl sababni emas (!), o’zi to’qigan yolg’on sababni bog'laydi. Masalan, "Nega bulutdan yomg'ir quyiladi?" degan savolga shoir barcha diniy va ilmiy sabablarni chetga surib, o'z to'qimasi bilan javob beradi: "Yor ishqida holim xarobligini troposferadan ko'rib qolgan bulut rahmi kelib yig'lab yuboradi. Anavi suv yomg'ir emas, bulutning achinish ko'zyoshlaridir". (Deyamush) Qisqasi, husni ta'lilni "kiydirish san'ati" desa ham bo'ladi. Husni ta’lil qanday topiladi? Avvalo, bu san’at bir so’zda emas, balki butunbir baytda bo’lishini bilishimiz lozim. Qolaversa: 1. Baytning MAZMUNIni tushunish kerak. 2. Shoir QAYSI HOLATni izohlamoqchi ekanini aniqlash kerak. 3. Shoirning YOLG’ONi (husni ta’lil) nimadan iborat ekanini topish kerak. 1-MISOL Zanburi asal og’zi to’la shahd ekaninidin, Erningni ko’rub, bemaza deb bol to’kubdur. (Lutfiy) 1. MAZMUNI: Asalarining og’zi asal (shahd)ga to’la ekan. Sening (yorga murojaat qilinyapti) labingni tatib ko’rib, asalari: “Endi asal bemaza tuyulyapti”, - debdi-yu, to’kib yuboribdi. 2. QAYSI HOLAT? Asalarining nega asal qilishi. 3. “YOLG’ON” (husni ta’lil): Asalari go'yo yorning shirin labi oldida o’g’zidagi asalning ancha bemaza ekanini bilgach, asaldan voz kechibdi (uni tashlab yubordi). Izoh: Aslida, asalari o’zi uchun asal tayyorlaydi, boringki, Alloh uni shunday yaratgan. Lekin Lutfiy bu sabablarni chetga surib: “Asalari yorimning labi tufayli asal to’kishni boshlagan. Ungacha asal to'kmas edi”, - deya bizni “kiydirmoqda”. 2-MISOL Yangi oy qoshlari xijlatidin, Oylarda biror-biror ko’rinur. (Atoiy) Keling, bu baytga boshqa usulni qo'llasak. Deylik, Qamchibek ustozi (bu o'rinda Atoiy)dan bir savol so'raydi, ustozi uni "aldaydi". Qamchibek: - Ustoz, nega yangi oy bir oyda bir chiqadi? Ustoz: - Bo'tam, bunga sabab shuki, oy o'zini "Men eng go'zalman, "Miss Universe"man" deb yurar edi. Bir kuni yorning qoshlari o'zidan go’zalroq ekanini ko'rib, aytgan gaplari (karillab qo'ygani) uchun ming xijolat bo’lib, oyda bir martagina ko’rinish beradigan bo'ldi. Husni ta’lil san’atini qo’llash mahorati bo’yicha turkiy adabiyotda Lutfiyga teng keladigani bo’lmagan. Quyidagi birgina baytdagi topilmaga guvoh bo’lib, fikrimiz to’g’riligiga amin bo’lasiz. 3-MISOL Labingdin chun suchuklik qand o’g’urlar, Solurlar el ani suvg’a yalang’och. (Lutfiy) Qamchibek: - Ustoz, nega qandni yalang'ochlab suvga solamiz? Ustoz: - Shuni ham bilmaysanmi, suvni shirin qilish uchun-da. - Bo'tam, bilasanki, o'g'ri qo'lga tushsa, u qochib ketmasligi va xaloyiq yig'ilishi uchun uni yalang'ochlab, suvga (hovuzga) tashlab qo'yamiz. Qand ham o'g'ri: u shirinlikni (chuchuklikni) yorimning labidan o'margan. Shu bois uni ham yalang'ochlab suvga solib qo'yamiz. #sanoye @sandiqchamiz