Установить свойства виджета в 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
Автоматический выключатель YCB6H-63 (1A~63A)
Номинальная отключающая способность короткого замыкания - 6кА
Модульные автоматические выключатели YCB6H-63 предназначены для защиты низковольтных электрических цепей от перегрузок и токов короткого замыкания, а также для оперативного включения и отключения электрических цепей переменного тока частотой 50/60 Гц напряжением 230/400В.
Выключатели имеют три типа характеристики срабатывания от тока короткого замыкания и различные области применения:
• тип B 3-5 In (номинальный ток) применяется для защиты линий освещения или линий имеющих большую протяженность
• тип C 5-10 In: применяется для защиты розеточных групп или линий с потребителями с умеренными пусковыми токами
• тип D 10-20 In: применяется для защиты трансформаторов или линий с потребителями с большими пусковыми токами
Для модульных автоматических выключателей YCB6H-63 предусмотрены дополнительные устройства как вспомогательный контакт, аварийный дополнительный контакт и независимый расцепитель. С помощью этих устройств возможно осуществлять дистанционное отключение выключателя и применять их для управления вторичными цепями.
📱Телефоны:
(99) 844-00-30 Эргаш
(99) 843-00-30 Сардор
📠факс/офис: (71) 228-02-11
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
Instagram —»» https://www.instagram.com/cnc_uzbekistan/
Facebook —»» https://www.facebook.com/electromaxgroup/
Telegram —»» https://t.me/electromaxgroup
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик
‼️Скоро в продаже! ‼️
Серия CJX2S - это контакторы нового поколения, имеют
современный дизайн и компактную конструкцию.
В новых контакторах доступны еще больше дополнительных контактов.
Используются, главным образом для частых запусков и управления двигателями переменного тока, а также для удаленного замыкания/размыкания цепи.
📱Телефоны:
(99) 844-00-30 Эргаш
(99) 843-00-30 Сардор
📠факс/офис: (71) 228-02-11
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
Instagram —»» https://www.instagram.com/cnc_uzbekistan/
Facebook —»» https://www.facebook.com/electromaxgroup/
Telegram —»» https://t.me/electromaxgroup
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик
Интеллектуальные воздушные автоматические выключатели серии YCW1 применяются для сетевых цепей переменного тока 50 Гц, номинального напряжения 400 В, 690 В и номинального тока между 630 А и 6300 А. В основном используется для распределения энергии, защиты цепи и устройства электропитания от короткого замыкания, пониженного напряжения, однофазного замыкания на землю и т. д. Воздушные автоматические выключатели имеют интеллектуальную функцию защиты, а ключевые детали имеют интеллектуальный расцепитель. Расцепитель может обеспечить точную избирательную защиту, которая поможет избежать отключения питания и повысить надежность электроснабжения.
📱Телефоны:
(99) 844-00-30 Эргаш
(99) 843-00-30 Сардор
📠факс/офис: (71) 228-02-11
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик
Азиз дўстлар!
2019 йил 17 декабр куни Ўзбекистон ELECTRO гуруҳи томонидан ўқитувчилар ва мураббийларга бағишланган илк форум ўтказилди.
Жамоамиз номидан ELECTRO гуруҳига келажакдаги барча режаларида муваффақият тилаймиз ҳамда CNC UZBEKISTAN жамоасини фаол қуллаб қўвватлаганликлари учун катта миннатдорчилик билдирамиз.
Дорогие друзья!
17 декабря 2019 года ELECTRO группа Узбекистан провела свой первый форум посвященный учителям и наставникам.
Команда CNC UZBEKISTAN желает успехов во всех дальнейших планах и выражает огромную благодарность за активную поддержку
https://t.me/electroUzbekistan
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
Instagram —»» https://www.instagram.com/cnc_uzbekistan/
Facebook —»» https://www.facebook.com/electromaxgroup/
Telegram —»» https://t.me/electromaxgroup
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик
Азиз дўстлар!
2019 йил 26чи октабр куни CNC UZBEKISTAN жамоаси 1 ёшга тўлгани муносабати билан Ўзбекистон Ресторанида байрамона кечасини ўтказди.
Сизларга ушбу кечадаги фото суръатлар ва видео лавҳаларни тақдим этмоқчимиз.
Дорогие друзья!
26 октября 2019 года команда CNC UZBEKISTAN торжественно отмечала свою первую годовщину в ресторане Узбекистан.
Мы бы хотели представить Вашему вниманию фотографии и видео с этого вечера.
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
Instagram —»» https://www.instagram.com/cnc_uzbekistan/
Facebook —»» https://www.facebook.com/electromaxgroup/
Telegram —»» https://t.me/electromaxgroup
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик
Қадрли дўстлар!
2019 йил 23чи октябр куни CNC UZBEKISTAN жамоаси УзЭкспоМарказда бўлиб ўтган "UzExpoEnergy 2019" ҳалкаро кўргазмасида иштирок этди. Ушбу кўргазмада CNC Electric заводи томонидан 2019 йил ишлаб чиқарилган махсулотлари билан кўргазма иштирокчиларини таништирди.
Сизларга ушбу кўргазмадаги фото суръатлар ва видео лавҳаларни тақдим этмоқчимиз.
Дорогие друзья!
23 октября 2019г. Команда CNC UZBEKISTAN имела честь учавствовать на международной выставке "UzExpoEnergy2019". На данной выставке CNC Electric представил посетителям продукцию 2019 года.
Мы бы хотели представить Вашему вниманию фотографии и видеоролик с этой выставки.
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
Instagram —»» https://www.instagram.com/cnc_uzbekistan/
Facebook —»» https://www.facebook.com/electromaxgroup/
Telegram —»» https://t.me/electromaxgroup
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик#expo
Aziz do'stlar!
Sizlar bilan 23 dekabr kuni "Oilaviy" telekanalida bo'lib o'tgan "Картинки с выставки" teleko'rsatuvi bilan o'rtoqlashmoqchimiz.
Eslatib o'tamiz, 30 dekabr soat 19:35 da siz "Oilaviy" telekanali orqali dasturni qayta ko'rishingiz mumkin.
Дорогие друзья!
Хотим поделится с видео, которое Вы могли увидеть 23 декабря 2019 года на канале «Oilaviy» в телепередаче «Картинки с выставки»
Напоминаем, что у Вас есть еще шанс увидеть повтор 30 декабря в 19.05 на канале «Oilaviy»
🌐website: www.cncele.uz, www.elcom.uz
📧e-mail: [email protected]
Instagram —»» https://www.instagram.com/cnc_uzbekistan/
Facebook —»» https://www.facebook.com/electromaxgroup/
Telegram —»» https://t.me/electromaxgroup
#cnc#cncelectric#cncuzbekistan#cnctashkent#электротехническаяпродукция#электрощит#electric#electrician#электрика#электрик#магазин#oilaviy