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

Пребарај: #dedipath

当前筛选 #dedipath清除筛选
VPS简测

@vps_test · Post #479 · 31.08.2023 г., 10:31

JJNEWS DediPath将要跑路(没提到洛杉矶区域,暂不清楚是否会全部跑) Dear mjj, We will are writing to you regarding your service at DediPath. With a heavy heart we must announce that DediPath will be discontinuing operations effective 8/31/23. Please migrate your data and take backups as soon as possible. In regards to our colocation customers if you are in the following locations please send a ticket to [email protected] for equipment removal: Dallas Las Vegas Denver Atlanta Jacksonville In regards to our colocation customers if you are in the following location please send a ticket to [email protected] for equipment removal: Seattle In regards to our colocation customers if you are in the following locations please send a ticket to [email protected] for equipment removal: Phoenix In regards to our colocation customers if you are in the following locations please send a ticket to [email protected] for equipment removal: Secaucus Redondo Beach San Jose If you have a domain registered with us please transfer it out ASAP. We are truly sorry for the inconvenience this has caused. We appreciate your business and support over the years and this is heart breaking to everyone at DediPath. Sincerely, DediPath #jjnews#dedipath

VPS简测

@vps_test · Post #131 · 07.06.2023 г., 02:58

DediPath Hybrid Server(高性能不超售服务器)原价11.4刀,官方5折->5.7刀 2C4G250G HDD 意外的是流媒体解锁,G口真不限流量!适合建站,中国移动部分省份用不了(比如江苏) #dedipath#1Gbps#不限流量#流媒体解锁