Установить свойства виджета в 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
Antara tanda awal strok haba adalah pening atau sakit kepala, loya atau muntah dan sawan.
Jangan dedahkan diri kepada cuaca panas dalam tempoh yang lama.
Segera dapatkan rawatan jika tidak sihat.
#ANMS#KekalSihat#sihatmilikku
Lindungi anak anda daripada cuaca panas.
Awas! Jika anak anda menunjukkan gejala seperti demam, lesu, pernafasan tidak normal dan sawan, dapatkan rawatan segera di fasiliti kesihatan.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Cara yang paling berkesan untuk mencegah penyakit pneumokokal adalah dengan pengambilan imunisasi pneumokokal.
Pengambilan imunisasi pneumokokal boleh mengelakkan komplikasi seperti hilang upaya secara kekal, gangguan pertumbuhuan dan perkembangan kanak-kanak serta kematian.
Amalkan kebersihan yang baik dah cara hisup yang sihat.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Lakukan perkara di bawah sekiranya ada ahli keluarga anda mengalami strok haba.
Langkah-langkah pencegahan yang boleh diambil ketika cuaca panas adalah seperti minum air kosong dengan banyak dan kerap, gunakan topi atau payung sekiranya berada di luar dan Hadkan aktiviti di luar rumah.
*Ini adalah petikan daripada e-Majalah MyHEALTH Edisi Jun 2023. Klik https://rb.gy/6wjhe untuk edisi penuh.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Pneumokokal berjangkit melalui titisan pernafasan, ciuman dan menyentuh permukaan yang tercemar.
Dapatkan rawatan segera sekiranya anak anda mengalami tanda dan gejala seperti demam, kesukaran bernafas, sawan dan sakit telinga.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Perhatikan tanda-tanda jika seseorang itu mengalami dehidrasi atau kekeringan air dalam badan.
*Ini adalah petikan daripada e-Majalah MyHEALTH Edisi Jun 2023. Klik https://rb.gy/6wjhe untuk edisi penuh.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Tip kekal sihat kepada jemaah haji dan petugas haji
➡️ Amalkan amalan sihat di tanah suci
➡️ Kekal bersih di tanah suci
➡️ Patuh kepada pengambilan ubat (jemaah haji sahaja)
➡️ Elak risiko penyakit berjangkit
➡️ Jaga kebersihan penginapan jemaah haji
➡️ Elak keracunan makanan
➡️ Amalkan konsep 5B semasa mengambil ubat
#ANMS#KekalSihat#sihatmilikku
Pneumokokal disebabkan oleh bakteria Streptococcus Pneumoniae.
Ia lebih cenderung menjangkiti kanak-kanak dan boleh dicegah dengan pengambilan vaksin pneumokokal.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Berikut merupakan golongan yang berisiko mendapat penyakit strok haba
👶 Bayi kecil dan 🧒👧 kanak-kanak
🤰 Ibu mengandung dan 🤱 menyusu anak
🧓👵 Warga emas
🩺 Mempunyai penyakit kronik
👷 Bekerja di bawah panas terik matahari
☀️ Melakukan aktiviti fizikal di kawasan terik matahari
*Ini adalah petikan daripada e-Majalah MyHEALTH Edisi Jun 2023. Klik https://rb.gy/6wjhe untuk edisi penuh.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Cuaca panas adalah situasi di mana suhu persekitaran melebihi daripada suhu pada hari biasa.
Pendedahan kepada cuaca panas boleh memberi kesan kepada kesihatan manusia daripada ringan kepada teruk.
Faktor yang boleh meningkatkan risiko strok haba adalah seperti pendedahan yang lama dan secara langsung kepada cuaca panas dan dehidrasi.
*Ini adalah petikan daripada e-Majalah MyHEALTH Edisi Jun 2023. Klik https://rb.gy/6wjhe untuk edisi penuh.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Virus MERS boleh menjangkiti manusia daripada unta baka arab yang dijangkiti virus MERS-CoV melalui kontak langsung atau tidak langsung (pengambilan produk unta seperti daging dan susu mentah).
Ia tidak mudah merebak daripada manusia kepada manusia melainkan melalui kontak rapat tanpa perlindungan dan boleh berlaku ketika menjaga pesakit MERS tanpa perlindungan.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama
Berikut adalah tindakan Duyufurrahman kekal sihat sebelum, semasa dan selepas menunaikan fardu haji.
#ANMS#KekalSihat#sihatmilikku
Sumber:
Bahagian Pendidikan Kesihatan, KKM
t.me/sihatmilikbersama