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

Резултати

Пронајдени 2 слични објави

Пребарај: #buildonton

当前筛选 #buildonton清除筛选
DWF Labs Broadcast

@Dwflabs · Post #173 · 22.01.2023 г., 09:54

​Now is the time and we are building!💎 The Open Network (TON) is growing strong developer communities in countries across the globe as our Hackathon provides developers with the necessary resources and guidance to build something incredible.🔥 Super excited to announce our INVITE-ONLY, on-site events. During our Hackathon this February, we will invite 6~10 teams that are looking to #buidl on #TON in a city that could be near you! Our goal is to empower builders and developers in local communities to create innovative applications, services and protocols with The Open Network. For the event, builders and developers will get a chance to meet and ask questions to a member of The TON Foundation and local TON developer specialist(s). The Q&A session will ensure that builders and developers are well equipped with knowledge about TON tools, incubation opportunities and building on TON mainnet. Join us on our mission to unite all blockchains and Web2 internet into one open network! If you want to attend and are excited to #BuildOnTon, please submit an introduction and your BUIDL idea! 🤓💻 To be eligible to WIN exclusive access, please abide by the following criteria: - Max. two people per team - Max. 150~250 words per pitch - Keep it concise and clear - Focus on value for the TON community - Submission period: Jan 18 (Wed) ~ Jan 25 (Wed) We are super keen to have developers from all over the world join us on our mission to build the next-gen internet. So, what are you waiting for? 💎SUBMITyour idea! The schedule of offline events during the TON global hackathon: Feb. 11-12: Taipei Seoul Bangkok Prague Feb. 18-19: Dubai Tel Aviv Tokyo Istanbul Singapore Feb. 25-26: Hong Kong Melbourne Saint Petersburg Hyderabad London

DWF Labs Broadcast

@Dwflabs · Post #165 · 20.01.2023 г., 00:00

​Now is the time and we are building!💎 The Open Network (TON) is growing strong developer communities in countries across the globe as our Hackathon provides developers with the necessary resources and guidance to build something incredible.🔥 Super excited to announce our INVITE-ONLY, on-site events. During our Hackathon this February, we will invite 6~10 teams that are looking to #buidl on #TON in a city that could be near you! Our goal is to empower builders and developers in local communities to create innovative applications, services and protocols with The Open Network. For the event, builders and developers will get a chance to meet and ask questions to a member of The TON Foundation and local TON developer specialist(s). The Q&A session will ensure that builders and developers are well equipped with knowledge about TON tools, incubation opportunities and building on TON mainnet. Join us on our mission to unite all blockchains and Web2 internet into one open network! If you want to attend and are excited to #BuildOnTon, please submit an introduction and your BUIDL idea! 🤓💻 To be eligible to WIN exclusive access, please abide by the following criteria: - Max. two people per team - Max. 150~250 words per pitch - Keep it concise and clear - Focus on value for the TON community - Submission period: Jan 18 (Wed) ~ Jan 25 (Wed) We are super keen to have developers from all over the world join us on our mission to build the next-gen internet. So, what are you waiting for? 💎SUBMITyour idea! The schedule of offline events during the TON global hackathon: Feb. 11-12: Taipei Seoul Bangkok Prague Feb. 18-19: Dubai Tel Aviv Tokyo Istanbul Singapore Feb. 25-26: Hong Kong Melbourne Saint Petersburg Hyderabad London