Установить свойства виджета в 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
✈️Bali expects 2.79 million tourists on New Year's Eve
📰 The Ministry of Transportation says 2.79 million visitors will arrive on the island during the Christmas and New Year holidays. This is traditionally the peak season on the island.
📍 Most of the travelers will arrive via the airport – 1.5 million people. Another 1.2 million will arrive via the Gilimanuk port, which connects Bali to the islands to the west, and 90,000 via the Padang Bay port to the east.
🚘 Bali's infrastructure, especially transportation, will face a major strain. Traffic is expected to increase by 20%.
🤔 Local authorities are already proposing exotic measures to combat traffic congestion – banning cars with license plates from other islands. However, it is problematic to put this into practice. The regional authorities have no such powers, and the central authorities will obviously not agree to it.
🎄 For everyone who is going to visit Bali for the holidays it is recommended to choose areas that have everything you need for a vacation. This will help to minimize movement around the island, and your mood will be much better.
@BaliNews
#transport#holidays#traffic
🚦 Bali authorities promise to avoid New Year traffic chaos
📰 After last year’s holiday gridlock, Bali police say they’re ready to keep traffic moving this festive season. A large-scale operation, Lilin Agung 2025, is now in effect across the island.
📍 Extra officers are deployed in busy tourist areas like Canggu, Seminyak, Kuta, and Uluwatu, while Ngurah Rai International Airport is operating 24/7 with heightened security and weather monitoring.
🌧️ With heavy rains and more than 1.5 million visitors expected, travelers are advised to leave for the airport well in advance and follow police instructions.
👮♂️ Authorities say all measures are in place to ensure a safe and smooth holiday travel experience
#holidays#traffic#safety@BaliNews
The increase in fines for a number of traffic violations will come into force on January 1, 2025
📌"In Article 2, the word" Law "should be replaced with the words "Federal Law", the words "after thirty days from the date of its official publication" should be replaced with the words "from January 1, 2025," the text of the amendment posted in the Duma electronic database says.
📌Under this law, failure by a driver to perform the duty to insure his civil liability, as well as driving a vehicle, if the Compulsory third Party Insurance (CTP) policy is deliberately absent, entails the imposition of an administrative fine in the amount of 800 rubles.
📌Earlier, the Parliament of the Kabardino-Balkar Republic submitted to the State Duma a bill that proposes to establish a fine for repeated violation of the Administrative Code of the Russian Federation, namely the absence of a driver's CTP policy, up to 5 thousand rubles.
CTP policy means Compulsory Third Party Insurance Policy
#news#russia#nido_russia#traffic#fine#regulations
https://t.me/nido_russia
E-commerce Conversion Crisis
E-commerce stores face a critical issue: they struggle to convert social media traffic into purchases, with conversion rates half as effective as average standards. Social media is a key source for online sales, with 64% of internet users shopping through these platforms, accounting for one-third of total online sales. The significant loss from unconverted traffic prompts stores to seek solutions, making platforms that improve conversion rates highly valuable.
Learn more about a startup addressing this issue: Read here
#Ecommerce#SocialMedia#Conversion#OnlineSales#Startup#Traffic#Retail#DigitalMarketing#Commerce#Business#Tech#Innovation#Sales#Marketing#UserExperience#Platforms#Shopping
E-commerce Conversion Crisis
E-commerce stores face a critical challenge with low conversion rates from social media traffic—about half of the general average. Despite this, social networks are a major traffic source, with 64% of users making purchases through them, accounting for a third of online sales. This gap presents significant revenue losses for stores that fail to convert this traffic, highlighting a potential market for platforms aimed at boosting conversions.
Read more: Fastfounder
#Ecommerce#Conversion#SocialMedia#Traffic#Sales#OnlineShopping#Startup#Market#Revenue#Challenges#Users#Platforms#Retail#Growth#Insights#Business#Tech#DigitalMarketing#Shopping#Income#Reports