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

Пребарај: #bluebird

当前筛选 #bluebird清除筛选
PT资讯频道

@PrivateTrackerNews · Post #772 · 03.08.2019 г., 16:27

#BlueBird Report and reminder on the "piggy bank" (July 2019) Dear users, dear friends! We thank those who have already supported the "Piggy Bank" (and, in fact, filling the tracker with novelties) as well as those who are only going to help. Also, thanks to you, the contest "Best Uploader" started, in July they became DONOR - with which we congratulate him! Report for the month of July, you can see in the relevant section. We ask you not to forget to support the section, as far as possible. Thank you for being with us! Respectfully, Administration 關於“存錢罐”的報告和提醒(2019年7月) 尊敬的用戶,親愛的朋友們! 我們感謝那些已經支持“存錢罐”的人(事實上,他們只是為新手提供支持)以及那些只會提供幫助的人。 另外,感謝你,“最佳上傳者”比賽開始了,他們在七月成為捐贈者 - 我們向他們表示祝賀! 有關7月份的報告,您可以在相關部分看到。 我們要求您盡量不要忘記支持該部分。 謝謝你和我們在一起! 尊敬, 管理

Hashtags

PT风向旗

@Ptfxq · Post #602 · 02.03.2024 г., 13:49

#没用的外站信息 可能会被群友说是没用的外站信息,就合并到一起发了。 ——— #BTN#BroadcasTheNet#站点公告 BTN 一年一度的烤派比赛来了,详情请戳首页公告查看。 ——— #HDSpace#站点免费 2 March 开始,站免 48 小时。 ——— #DigitalCore#DCC#站点免费 还剩下 7天+站免时间 ——— #BlueBird#蓝鸟#站点免费 站免至 2024-03-03 13:35:22 EET (GMT+3) ——— #AR#AlphaRatio#站点恢复