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

Резултати

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

Пребарај: #chest

当前筛选 #chest清除筛选
Anatomy Art Hub ☮️

@anatomyarthub · Post #1279 · 20.07.2023 г., 07:38

#анатомия#торс#anatomy#chest Подключичная ямка — это пространство между грудными мышцами и дельтовидными мышцами. Это очень маленькая деталь, но, тем не менее, весьма полезная для определения промежутка между мышцами. The subclavian fossa is the space between the pectoral muscles and the deltoid muscles. This is a very small detail, but nevertheless very useful for determining the gap between the muscles. @anatomyarthub

Anatomy Art Hub ☮️

@anatomyarthub · Post #1299 · 21.07.2023 г., 11:45

#анатомия#грудь#anatomy#chest Грудной отдел позвоночника — это часть, которая соединяется с ребрами. Вы можете нарисовать обобщенную грудную клетку придавая ей яйцевидную форму, напоминающую форму ребер (1). Грудина (2) закрывает эту структуру спереди, создавая вместе с позвоночником воображаемую линию, разделяющую тело на две симметричные части — правую и левую. Используйте их в качестве ориентира! Ключицы (3) похожи на велосипедный руль, думайте о них как о поддержке плеча. Часто, когда руки двигаются, они будут менять направление. The thoracic spine is the part that connects to the ribs. You can draw a generalized ribcage by giving it an ovoid shape, reminiscent of the shape of the ribs (1). The sternum (2) closes this structure in front, creating, together with the spine, an imaginary line dividing the body into two symmetrical parts - the right and the left. Use them as a guide! The collarbones (3) are like a bicycle handlebar, think of them as shoulder support. Often, when the arms move, they will change direction. @anatomyarthub