Установить свойства виджета в 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
Parsing.uz — bu Oʻzbek tilida ishlovchi onlayn xizmat bo‘lib, lotin alifbosidagi matnni kirill alifbosiga va aksincha o‘girishga moʻljallangan.
Quyidagi asosiy funksiyalari bor:
➖ Word, Excel, PowerPoint, PDF, TXT va OpenDocument (odt, ods) formatdagi hujjatlarni lotindan kirillga yoki kirilldan lotinga konvertatsiya qilish.
➖ «Ў», «Қ», «Ҳ», «Ғ», «Ч», «Ц» kabi o‘zbek alifbosidagi harflarni noto‘g‘ri tarjima qiladigan ba’zi dasturlardagi muammolarni tuzatish.
Afzalliklari:
➖Matnni avtomatik va tez oʻgirish imkoniyati.
➖ Hujjatlar bilan ishlaganda qulay — turli fayl formatlarini qoʻllab-quvvatlaydi.
➖ Oʻzbek tiliga xos harflar bilan ishlashda aniqlik
✅Bizning barcha loyihalar | #parsing
🍯 Как узнать, что токен — honeypot?
🚩Красный флаг — Что это значит
🤖 Нет исходного кода контракта на explorer'е — Скрывают детали схемы
📉 Нельзя увидеть, кто продавал токен — Только покупки, значит ловушка
🔐 Контракт не верифицирован — Может быть встроен запрет на продажу
💸 Высокие комиссии (от 30% и выше) — Крипто-вампиризм
🧠 Слишком активный памп без причины — Это не инсайд, это развод
Также можно использовать honeypot checker'ы, например: https://honeypot.is, https://tokensniffer.com
Итог:
Honeypot в крипте — это когда тебе дают “попробовать” токен, но забирают всё остальное.
Ты не трейдер. Ты наживка.
Купить можно — выйти нельзя.
#PARSING
💰"NFT-дроп как метод самообнуления"
Фейковые дропы, NFT и TON-розыгрыши в Телеге — всё ещё рабочий скам, только обёртка стала красивее.
Хочешь понять, как именно у тебя сливают кошелёк за 3 клика — листай слайды.
Если ты до сих пор веришь в подарки от Telegram — читай дважды.
#PARSING
🤡«Меня не развести, я в интернете с 2012-го, я шарю»
— сказал чел и через 3 минуты назвал код из СМС «сотруднику банка».
Почему мы так уверены, что не попадёмся?
Потому что мозг делает тупейшую вещь — он думает, что уже всё знает.
Разберем по пунктам:
1. Иллюзия иммунитета
- Ты слышал тысячи историй, видел мемы, читал в тгк/вк, как “лохов разводят на деньги”.
- И думаешь: «Это с ними. Я-то гений. Я-то шарю».
- Поздравляем, ты в зоне риска.
2. “Это слишком глупо, чтобы сработать”
- Звонит бот: «Ваш договор просрочен, переведите деньги на безопасный счёт».
- Ты рофлишь… а потом через 3 звонка — реальный голос, знание твоих данных, угроза суда.
- И ты уже не ржёшь. Ты паникуешь.
3. Эффект доверия
- Как только слышим «банк», «налоговая», «Минцифра» — 🧎♂️ автоматически подчиняемся.
- Это инстинкт. Нам проще поверить, чем спорить.
- А скамеры — этим и живут.
4. Психология паники
- «На вас оформлен кредит, сейчас деньги спишутся!»
- Таймер, давление, угроза.
Мозг — в режиме “бей или беги”.
Ты бьёшь... по кнопке перевода.
Вывод:
Если ты думаешь, что “ не лох/гений/нетакуся ” — ты не защищён, а уязвим - как посылка из Shein на таможне📦.
Реально защищён — только тот, кто осознан и готов к разводу. Кто знает схемы. Кто не доверяет звонкам. Кто дважды проверяет.
Не будь уверенным. Будь внимательным!
#PARSING
Ребятки, подготовил для вас краткую навигацию по каналу, чтобы ничего не затерялось.
Интересные для себя темы ищем по хештегам ниже:
#NEWS - новые, как твои кроссики👟, новости о недо-мошенниках
#SCAM - свежайшие, как спелый персик🍑, схемы (лучше перебдеть, чем недобдеть)
#HOT - горячие, как бабушкины блинчики🥞, новости о том, что запрещают или запретят в скором времени
#TOP - собрали хит-парад способов стать бомжом🏚, даже не выходя из дома.
#PARSING - разбираем, почему при слове “уголовная ответственность” ты сливаешь бабки быстрее, чем суши по акции🍣.
#python#agents#generative_ai_tools#llamacpp#llm#onnx#openvino#parsing#retrieval_augmented_generation#small_specialized_models
llmware is a powerful, easy-to-use platform that helps you build AI applications using small, specialized language models designed for business tasks like question-answering, summarization, and data extraction. It supports private, secure deployment on your own machines without needing expensive GPUs, making it cost-effective and safe for enterprise use. You can organize and search your documents, run smart queries, and combine knowledge with AI to get accurate answers quickly. It also offers many ready-to-use models and examples, plus tools for building chatbots and agents that automate complex workflows. This helps you save time, improve accuracy, and securely leverage AI for your business needs[1][3][5].
https://github.com/llmware-ai/llmware