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

Пребарај: #tondns

当前筛选 #tondns清除筛选

Why collect SBT and XP from🙏TON Society? Let us remind you that SBT (Soulbound Token) is an NFT that is tied to your wallet, it cannot be traded or sold, which makes your wallet unique if it stores SBT NFT. What is it for? SBT NFT is a kind of “identity confirmation”, but only anonymous. SBT makes it clear to the sender that he is dealing with the right recipient and the right person behind him. Including when it comes to awards for contributions to the development of The Open Network. Such rewards can be obtained for activities within the Open League, they are displayed in your TON Society profile. What will SBT and XP owners get? Already, many people are collecting these achievements expecting to receive a reward in the future, but few people know how it works and what they can count on. ❤️Open League and SBT • SBTs are issued (minted) by the TON Society for contributions to the development of the TON blockchain community - for example, for participating in competitions and attending AMA sessions, attending conferences and meetups. • SBTs are issued by projects that receive incentives and grants through the Open League. 🫰Experience Points (XP) will become reputation points and will be converted into $TON • XP points at a 1:1 ratio to $TON , can be exchanged for $TON at any time. • Time-based formula affects the exchange rate - if $XP tokens are redeemed before March 31, 2025, the conversion will be at a less favorable rate. • On March 31, 2025, 1 XP will be equal to 1 $TON • SBT assumes a constant increase in XP income for inviting friends, purchasing Telegram Premium or TON DNS. 🔝TON Society will become the new public profile of the TON member, recognizing and rewarding everyone's achievements and contributions. #TON#Toncoin#TheOpenLeague#MassAdoption#TONSociety#TONDNS#SBT#NFT ⚡️Boost | 🎞YouTube |🌐Twitter