Установить свойства виджета в 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
#hosting#free#webdev
2025-yilda eng ishonchli 7 ta bepul hosting platformasi
Agar siz o‘z veb-saytingizni yoki portfolio loyihangizni bepul internetga joylashtirmoqchi bo‘lsangiz — mana siz uchun eng yaxshi 7ta platforma!
1️⃣Netlify — https://www.netlify.com
◾️ Frontend va statik saytlar uchun eng mashhur platforma.
◾️ GitHub bilan avtomatik deploy imkoniyati.
✅ Ishonchli, tez va doimiy bepul.
2️⃣Vercel — https://vercel.com
◾️Next.js, React, Vue kabi frameworklar uchun juda qulay.
◾️ Serverless funksiyalarni qo‘llab-quvvatlaydi.
✅ Tezlik va ishonchlilik bo‘yicha eng yaxshi variantlardan biri.
3️⃣GitHubPages — https://pages.github.com
◾️ Statik HTML, CSS, JS loyihalar uchun ideal.
◾️ To‘liq bepul va custom domen bilan ishlaydi.
✅ Portfolio va shaxsiy saytlar uchun a’lo tanlov.
4️⃣Render — https://render.com
◾️ Backend (Node, Python, Go) va front-end loyihalar uchun.
◾️ Bepul reja mavjud, lekin 15 daqiqadan so‘ng “sleep” rejimga o‘tadi.
⚙️ Test loyihalar uchun qulay.
5️⃣000webhost — https://www.000webhost.com
◾️PHP va MySQL qo‘llab-quvvatlaydi.
◾️ CPanel orqali boshqaruv.
⚠️ Ba’zida sayt qisqa muddat “sleep” rejimiga o‘tadi, lekin o‘rganish uchun zo‘r.
6️⃣InfinityFree — https://www.infinityfree.com
◾️ Reklamasiz, PHP va MySQL bilan to‘liq bepul hosting.
◾️ Domenni ulash oson, SSL bepul.
✅ Ishonchli va uzoq muddatli foydalanish uchun mos.
7️⃣Surge — https://surge.sh
◾️ Statik saytlarni terminal orqali bir daqiqada joylashtirish imkonini beradi.
◾️ Minimal, soddaligi bilan mashhur.
✅ Frontend dev’lar uchun juda qulay.
Bu hostinglar yordamida siz o‘zingiz yaratgan saytlarni bepul internetga joylashtirishingiz va haqiqiy domen bilan ulashingiz mumkin!
💻@dasturlash_hayoti — dasturchilar uchun eng kerakli maslahatlar, hazillar va foydali kontent!
https://uwsgi-docs.readthedocs.io/en/latest/
The uWSGI project
The #uWSGI project aims at developing a full stack for building #hosting services.
Application #servers (for various programming languages and protocols), proxies, process managers and monitors are all implemented using a common #api and a common configuration style.
#python
#hosting#netlify#webhost#heroku
Qanday qilib yaratgan saytingizni internetga bepul joylash mumkin?
🔗netlify.com
🔗000webhost.com
🔗heroku.com
Mana shu saytlar orqali siz saytingizni bepul internetga qo'ysangiz bo'ladi 😉
💻@dasturlash_hayoti — bir xatoni tuzatib, ikkinchisiga tayyorlanish! 😅
#hosting#netlify#webhost#heroku
Qanday qilib yaratgan saytingizni internetga bepul joylash mumkin?
🔗netlify.com
🔗000webhost.com
🔗heroku.com
Mana shu saytlar orqali siz saytingizni bepul internetga qo'ysangiz bo'ladi 😉
💻@dasturlash_hayoti — dasturchilar va dasturlash hayotini yoritib boradigan loyiha!
.NET loyihalari, windows server, domain integratsiya
Oramizdagi barcha .NET ahli qanday qilib api yozishni biladilar. Yoki umuman bir loyihani "loyiha" qilishni uddalaydilar. Ammo u bitganidan so'ng uni serverga qo'yish haligacha muammo bo'lib kelmoqda. Keling, ushbu muammoni yengilgina hal qilishni o'rganamiz. Yani windows server va domain sotib olib, ularni loyihamiz bilan integratsiya qilamiz. Aytgancha, SSL muammolari ham bor. Barchasini bitta qilib, bir darsda namoyish qilishga harakat qilamiz. Bu safargi speaker - kamina, Muhammadkarim.
Barchangizni ushbu mahorat darsida kutib qolamiz. Kirsangiz xursand bo'lamiz, kirmasangiz hafa bo'lish yo'q )
Sana: 5-fevral, 20:00
Havola: Zoom
Speaker: Muhammadkarim To'xtaboyev
#iis#windowsserver#domain#hosting
.NET Uzbekistan Community
➖➖➖➖➖➖➖➖➖➖
Telegram | Instagram | Youtube
📢 Oferta especial de Hosting +Dominio + Desarrollo Web personalizado 🥳.
Somos hicSeo, agencia número 1 en Cuba en SEO y desarrollo web👨💻
🏃♂️Contacta hoy con nosotros para que no te quedes fuera 👩💻💫 Aprovecha nuestra oferta flash y tendrás un sitio web profesional diseñado para ti en tan solo 15 días 😲.
¡Y eso no es todo lo que obtendrás!👇
Posicionamiento SEO inicial📈: ¡Que te encuentren en Google!
Conexión con tus redes sociales🌍: Amplía tu alcance y genera más engagement.
Soporte técnico 🧰: Siempre tendrás a alguien para ayudarte.
¡Entra a nuestra web, escríbenos hoy y has crecer tu negocio!
🌐https://hicseo.com/web/?utm_source=social&utm_medium=organic&utm_campaign=web_design
📞5351752836
••••••••••••• 🔺 •••••••••••••
Promocionado por Anuncios-cu.com
••••••••••••••••••••••••••••••••
#hicseo#desarrolloweb#hostingydominio#hosting#dominio#paginaweb#web#paginawebprofesional#ofertaflash#negocios#cubanos
#typescript#android#appwrite#backend#backend_as_a_service#docker#firebase#flutter#hacktoberfest#hosting#ios#javascript#nextjs#react#react_native#reactnative#self_hosted#selfhosted#serverless#swift#web
Appwrite is a backend platform that helps you build web, mobile, and Flutter apps quickly and easily. It handles complex tasks like user authentication, database management, file storage, and more, so you don’t have to build these from scratch. Appwrite is open source, secure, and works with many programming languages and frameworks. You can use it in the cloud or host it yourself using Docker. The main benefit is that it saves you time and effort, letting you focus on creating great features for your app instead of worrying about backend setup and maintenance[3][5][1].
https://github.com/appwrite/appwrite