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

Пребарај: #klungkung

当前筛选 #klungkung清除筛选
Bali News

@balinews · Post #108 · 05.07.2024 г., 13:30

⚠️New precautions to be introduced at Bali's most dangerous beach ❗️ Due to the increasing number of accidents and deaths at Kelingking Beach, Bali authorities are taking urgent measures to ensure the safety of tourists. 📍 Kelingking Beach, located on the island of Nusa Penida, has long been known for its treacherous beauty that attracts hundreds of thousands of tourists every year. Now vacations on this picturesque beach are set to get safer. 🛟 Security guards will be stationed at Kelingking Beach and other dangerous areas of Nusa Penida. 👮🏻‍♀️ Klungkung Tourism Office head Ni Made Suliyastivati said fences and warning signs have already been installed at several beaches with a high risk of accidents. She added: "We have put up warning signs and no bathing signs. We will reinforce this by placing guards at vulnerable sites." @BaliNews #beaches#places#Klungkung#NusaPenida

Bali News

@balinews · Post #88 · 15.06.2024 г., 10:03

🏝A residential complex and a glass elevator: Nusa Penida has begun to be developed 📸 A copter video taken near a famous beach on Nusa Penida has excited not only the Balinese, but the whole of Indonesia. The footage clearly shows a giant construction site right on the cliff. The first layer of vegetation and soil has already been removed, and in its place are the smooth and landscaped cement foundation blocks. The construction of a 182-meter-high glass elevator directly to the beach and observation decks on the cliff slope became known last year. The project of the Chinese developer shocked many people then. Both locals and foreigners said that such infrastructure would destroy the atmosphere of natural grandeur on Nusa Penida. However, local officials cited employment opportunities for locals and revenue generated by the tourist attraction as some of the pluses. Not so long ago, Nusa Penida was just an island of pristine Bali. Ten years ago it was not so easy to get here, let alone with modern hotels and a mass flow of tourists. @BaliNews #construction#events#Klungkung#NusaPenida