Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
https://wxpython.org/what.php
#wxPython is a #GUI toolkit for the Python programming language. It allows Python programmers to create programs with a robust, highly functional graphical user interface, simply and easily. It is implemented as a Python extension module (native code) that wraps the popular wxWidgets cross platform GUI library, which is written in C++.
https://www.eduonix.com/blog/software-development/learn-the-basics-of-gui-programming-in-python/
Learn the basics of #GUI Programming in Python
#tkinter
https://wiki.python.org/moin/GuiProgramming
#GUI Programming in Python
Python has a huge number of GUI frameworks (or toolkits) available for it, from #TkInter (traditionally bundled with Python, using Tk) to a number of other cross-platform solutions, as well as bindings to platform-specific (also known as "native") technologies.
GUI Programming in Python is a similar page whose content could arguably complement this page with some editing.
https://wiki.python.org/moin/GUI%20Programming%20in%20Python
This page provides some brief descriptive information on a number of #GUI toolkits available for Python. For a full list of of toolkits with more in-depth information, see #GuiProgramming.
GuiProgramming is a similar page whose content complements this page.
🆕 Новый сильный GUI-агент: UI-Ins от TongyiLab и RUC
Это модель, которая уверенно работает с мобильными интерфейсами и лучше понимает намерения пользователя.
Она рассматривает команду как цепочку рассуждений, а не как одно действие, поэтому справляется со сложными задачами стабильнее.
Результаты
UI-Ins показал 74.1% успешных действий в AndroidWorld. Для сравнения: Gemini 2.5 Computer Use - 69.7%. То есть модель чаще правильно выполняет задачи в реальных интерфейсах.
Модель:
- пытается понять цель, а не только текст команды
- строит несколько вариантов рассуждений
- выбирает подходящую стратегию перед действием
- адаптируется, если состояние приложения меняется
Идет в двух версиях: 7B и 32B.
Если вы работаете над агентами, которые должны нажимать кнопки, заполнять формы, открывать приложения и следовать шагам в интерфейсе - UI-Ins стоит добавить в список моделей для тестов.
🤖 UI-Ins-7B: https://modelscope.cn/models/Tongyi-MiA/UI-Ins-7B
UI-Ins-32B: https://modelscope.cn/models/Tongyi-MiA/UI-Ins-32B
📄arXiv: https://modelscope.cn/papers/2510.20286
@ai_machinelearning_big_data
#AI#Agents#GUI#MobileAgents#AndroidWorld#LLM
http://wxglade.sourceforge.net/
Description
#wxGlade is a #GUI#designer written in Python with the popular GUI toolkit #wxPython, that helps you create wxWidgets/wxPython user interfaces. At the moment it can generate Python, C++, Perl, Lisp and XRC (wxWidgets' XML resources) code.
As you can guess by the name, its model is Glade, the famous GTK+/GNOME GUI builder, with which wxGlade shares the philosophy and the look & feel (but not a line of code).
It is not (and will never be) a full featured IDE, but simply a "designer": the generated code does nothing apart from displaying the created widgets. If you are looking for a complete IDE, maybe Eric Python IDE, PyCharm, Code::Blocks or one of the many other IDE is the right tool.
News
#visual_basic_.net #dism#gui#sysadmin#windows
DISMTools is a free, open-source graphical tool that simplifies managing Windows images and installations using DISM commands. It offers project-based workflows, online/offline modes, AppX handling, ISO creation, and repairs without reinstalling Windows, working on Windows 8.1+ with great speed. You benefit by easily customizing, fixing, and optimizing systems or creating automated setups, saving time over complex command lines and avoiding paid tools.
https://github.com/CodingWonders/DISMTools
https://pybee.org/news/buzz/2017-google-summer-of-code-final-report-dayanne-fernandes/
After almost 4 months of work on Google Summer of Code 2017, finally I'm completing my proposal. Every widget migration and every commit/PR/issue/discussion with my mentors about Cricket , Toga and rubicon-objc were detailed on the Issue 58.
"Eating your own dog food"
The best way to show that a product is reliable to the customers is use it. So, the way to show that #Toga is an effective tool to build a #GUI is to build a complete application using it.
#Cricket is a graphical tool that helps you run your #test suites. Its current version is implemented using #Tkinter as the main GUI framework. So, why not test Toga inside of another product from #BeeWare? That's what I have acomplished during my GSoC work.
https://wiki.python.org/moin/PyQt
#PyQt is one of the two most popular Python bindings for the #Qt cross-platform #GUI/#XML/#SQL#C++ framework (another binding is #PySide).