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

Пребарај: #illuminati

当前筛选 #illuminati清除筛选

Who is a real #Muslim? People who are independent. They are not affiliated with the United States. Their leaders are not chosen by the #Illuminati. If a Muslim is attacked in another country, they will help them. Economic embargo and war cannot weaken their faith. They live in Yemen and will carry out a great responsibility in the events of the apocalypse. https://t.me/YediotNewsChat

In the Palestinian war with the Jewish terrorists, the people of the world changed their attitude. The people of the world used to receive news from official media and government-affiliated organizations. News agencies such as Associated Press, France Press, United Press, Reuters and many major news agencies in the world are in the hands of #Zionists. But in the Palestine war, the people of the world turned to individual media such as Telegram, Twitter and Tik Tok to discover the truth. The social networks that were built for the #Illuminati to dominate have become the nightmare of the #Freemasons. https://t.me/YediotNewsChat

The #Jewish media empire portrays Iranophobia in the world. This tourist was told that Iran is a dangerous country, but upon entering Iran, he was surprised by the Zionists' false propaganda against Iran. Imperialists and #Freemasons do not want the people of the world to know Iranian civilization. Because Iranian culture wants to destroy the #Illuminati. https://t.me/YediotNewsChat

Some news sources say that the price of internet has increased in some Muslim countries. Social networks and individual media have become an important tool to deal with the #Zionists. Because the state media is under the control of the #Jews. Official and government news agencies publish selected news in favor of the Zionists. But social networks publish real news. Individual media are putting pressure on Israel. They have increased the price of the Internet to reduce the activity of individual media. Every word and picture published against the Zionists will hit the body of #Illuminati and #Freemasonry like a bullet. https://t.me/YediotNewsChat