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

Резултати

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

Пребарај: #maritimenews

当前筛选 #maritimenews清除筛选

🚢AIDA Cruises отменяет ближневосточный сезон 2026–27. Немецкая круизная компания AIDA Cruises объявила об отмене всей программы круизов на Ближнем Востоке в зимнем сезоне 2026–2027 годов. Решение касается всех рейсов лайнера «AIDAprima», запланированных с 19 октября 2026 года по 20 мая 2027 года. Компания объяснила этот шаг геополитической нестабильностью в регионе и невозможностью оценить уровень безопасности для пассажиров и экипажа. В связи с этим отменены и переходные круизы вокруг Африки, сопровождающие сезонную смену региона работы судна. Единственный рейс, который сохранится в расписании, — «Western Europe Highlights from Hamburg 1», в период 19 октября – 1 ноября 2026 г между Гамбургом и Лас-Пальмасом. Пассажирам отменённых рейсов предложено бронировать путешествия на иные маршруты флотаAIDA Cruises - Карибский регион, Канарские о-ва и Средиземноморье. Аналогичные корректировки уже проводят и другие круизные операторы, включая Costa Cruises, которые также перераспределяют флот из нестабильных регионов в более безопасные направления. 📌AIDA Cruises — немецкая круизная компания, основанная в 1996 году. Бренд входит в состав Carnival Corporation & plc, крупнейшего круизного оператора мира. Флот компании насчитывает более 10 круизных лайнеров, работающих на европейских и мировых маршрутах. #CruiseIndustry#AIDACruises#CruiseShipping#MaritimeNews#CruiseMarket

🚢Флагманская парусная яхта «Simena» выходит в Средиземное море. Турецкая верфь Ares Yachts объявила о завершении строительства своего нового флагмана — 62-метровой парусной яхты «Simena», которая покинула производственные цеха в Анталье и направилась в Монако для дебюта в первом средиземноморском сезоне. Судно должно пришвартоваться 22 марта в новом Explorer Dock Yacht Club de Monaco, где станет одной из центральных экспозиций программы Day of Exploration. В последующие дни яхта также примет участие в ряде мероприятий и дружеской регате. Испытания «Simena» завершились в июле 2025 года. Под парусом яхта достигла скорости до 14 узлов, продемонстрировав отличную морскую остойчивость и высокую манёвренность. Проект выполнен по стандарту RINA Class C со стальным корпусом и надстройкой из углеродного композита. Дизайн яхты разработан Taka Yacht Design и вдохновлён классическими клиперами: судно получило длинный бушприт, классические линии корпуса, тиковую палубу и отделку из красного дерева Sipo mahogany. Яхта рассчитанная на 12 гостей и экипаж из 9 человек - уже выставлена на продажу через брокера Northrop & Johnson примерно за €45,9 млн (около $49–50 млн). Название «Simena» отсылает к древнему морскому городу на южном побережье Турции и символизирует историческое наследие региона. 📌Ares Yachts — турецкая судостроительная компания, основанная в 2006 году в Анталье. Верфь специализируется на строительстве суперяхт, патрульных и специализированных судов. Компания является частной и принадлежит турецкому предпринимателю Умуту Четину. #Superyachts#AresYachts#SailingYacht#YachtingIndustry#MaritimeNews