Регулярно приходится писать и ревьюить код, где используется PySide2-6.
Заметил, что в подавляющем большинстве случаев настройка создаваемых базовых виджетов происходит через методы. Думаю, всем знаком такой способ.
Простой пример с кнопкой:
button = QPushButton("Click Me")
button.setMinimumWidth(300)
button.setFlat(True)
button.setStyleSheet("font-size: 20pt")
button.setToolTip("Super Button")
button.clicked.connect(lambda: print("Button clicked"))
Но есть и альтернативный способ - настройка через свойства. Это просто ключевые аргументы конструктора класса. Хоть они и не указаны в документации как аргументы, но они есть)
Этот код делает тоже самое но с помощью Property
button = QPushButton(
"Click Me",
minimumWidth=300,
flat=True,
styleSheet="font-size: 20pt",
toolTip="Super Button",
clicked=lambda: print("Button clicked"),
)
Где это может быть полезно
▫️ Это выглядит более аккуратно и коротко, уже повод использовать
▫️ Может использоваться в заполнении лейаута, когда нам не нужно никакое другое взаимодействие с виджетом и поэтому сохранять его в переменную не требуется. Например, лейбл или кнопка.
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
layout.addWidget(QLabel("Button >", alignment=Qt.AlignRight))
layout.addWidget(QPushButton("Click Me", clicked=lambda: print("Button clicked")))
widget.show()
Либо так
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
for wd in (
QLabel("Button >", alignment=Qt.AlignRight),
QPushButton("Click Me", clicked=lambda: ...)
):
layout.addWidget(wd)
widget.show()
▫️ Можно хранить настройки в каком-то конфиге или генерировать на лету, после чего передавать как kwargs.
kwargs = {"text": "Hello " * 30, "wordWrap": True}
my_label = QLabel(**kwargs)
Как получить полный список доступных свойств?
Эта функция распечатает в терминал все свойства виджета и их текущие значения
def print_widget_properties(widget):
meta_object = widget.metaObject()
for i in range(meta_object.propertyCount()):
property_ = meta_object.property(i)
property_name = property_.name()
property_value = property_.read(widget)
print(f"{property_name}: {property_value}")
#tricks#qt
#TouchDesigner, #TD
Моя мечта и цель создать инструмент для проектирования искусственных нервных схем подобно той которую можно увидеть в фильме "Ева: Искусственный разум". В фильме инженер по искусственному интеллекту используя придуманный шоураннерами редактор настройки ИИ, в основе которого граф вершины которого отражают различные психические качества и их настройки: любопытство, настойчивость, привязанность и т.д. Подобно этому в моём воображении формируется редактор в котором возможно настраивать различные области мозга и связи между ними: облсти коры, мозжечка, ментальная карта таламуса, центры потребностей и удовольствия. В поисках интерфейсных решений я наткнулся на TouchDesigner (TD), это программа для дизайнеров благодаря ей создаются различные крутые инсталляции, где требуйся динамика. Её особенность программирование с помощью специальных нод и организации связей между ними, внутри ноды может быть код или заранее подготовленный алгоритм. TD отвечает главному моему принципу - это визуализация и наглядность. Внутри каждой ноды есть отображение того, что происходит внутри неё. И конечно это работа в реалтайме, пришло врем решать задачи в реалтайме... Конечно, TD это не создан для задач машинного обучения, в нём есть некоторые ограничения для моей работы, но это будет некий прототип, где я отработаю некоторые механики. Здесь есть ноды GLSL, а значит быстрые вычисления на GPU, есть нода python и сила numpy. Во первых, я переношу некоторые свои алгоритмы в TD, пока только в начале. Это послужит началом и прообразом инструмента к которому я стремлюсь, таким же удобным и доступным как TD. Возможно сочетание с тем, что я делал в CogFLUX (https://belkinandrey.github.io/), базовые безусловные рефлексы возможно настроить на нейронах, а когнитивные вычисления на нодах более высокого порядка с заготовленными алгоритмами. Причем всё может работать совместно.
Под хэштегом #TouchDesigner и #TD буду выкладывать этот прогресс. Сейчас на видео самый простой алгоритм кластеризации из статьи https://habr.com/ru/articles/709350/
#Polonia#Sejm
Con 265 voti favorevoli e 193 contrari, Szymon #Hołownia (#TD/#Polska2050|RE) è stato eletto nuovo Presidente del Sejm (Camera bassa).
@OsservatorioEsteri
#Polonia
#KO|EPP|RE|G/EFA, #TD|RE|EPP e #Lewica|S&D hanno annunciato che presenteranno il leader di #PO|EPP Donald #Tusk come candidato a Primo Ministro.
@OsservatorioEsteri
🚀 Analyst Lance Vitanza Initiates Buy Ratings on Three Treasury Companies
Lance Vitanza from TD Cowen has initiated coverage on Nakamoto, SharpLink Gaming, and Strive with Buy ratings. According to NS3.AI, Vitanza has set price targets of $1, $16, and $26 for these companies, respectively. He suggests that these treasury firms have the potential to outperform spot crypto exchange-traded products, provided that cryptocurrency prices recover and the companies continue to increase their token holdings per share.
#LanceVitanza#TD Cowen #Nakamoto#SharpLinkGaming#Strive#BuyRating#TreasuryCompanies#Crypto#TokenHoldings#PriceTargets#BTC
#Polonia
È stata pubblicata la lista del Terzo governo di Donald #Tusk (#PO|EPP):
-Primo Ministro: Donald #Tusk (PO)
-Vicepremier e Ministro della Difesa Władysław #KosiniakKamysz (#TD/#PSL|EPP);
-Vicepremier e Ministro della Digitalizzazione: Krzysztof #Gawkowski (#Lewica/#NL|S&D);
-Ministro della Giustizia: Adam #Bodnar (#KO|EPP|RE|G/EFA);
-Ministro degli Esteri: Radosław #Sikorski (PO);
-Ministro degli Interni: Marcin #Kierwiński (PO);
-Ministra per la Società Civile: Agnieszka #Buczyńska (TD/#Polska2050|RE);
-Ministro delle FInanze: Andrzej #Domański (PO);
-Ministro del Patrimonio Statale: Borys #Budka (PO);
-Ministra dell'Industria: Marzena #Czarnecka;
-Ministra della Famiglia, del Lavoro e delle Politiche Sociali: Agnieszka #DziemianowiczBąk (Lewica/NL);
-Ministra del Clima e dell'Ambiente: Paulina #HennigKloska (TD/Polska2050);
-Ministro dello Sviluppo e della Tecnologia: Krzysztof #Hetman (TD/PSL);
-Ministro delle Infrastrutture: Dariusz #Klimczak (TD/PSL);
-Ministra dell'Uguaglianza: Katarzyna #Kotula (Lewica/NL);
-Ministra della Salute: Izabela #Leszczyna (PO);
-Ministra dell'Istruzione: Barbara #Nowacka (#iPL|RE);
-Ministro dello Sport: Sławomir #Nitras (PO);
-Ministra degli Anziani: Marzena #OkłaDrewnowicz (PO);
-Ministra dei Fondi e delle Politiche Regionali: Katarzyna #PełczyńskaNałęcz (TD/Polska2050);
-Ministro dell'Agricoltura: Czesław #Siekierski (TD/PSL);
-Ministro della Cultura: Bartłomiej #Sienkiewicz (PO);
-Ministro degli Affari Europei: Adam #Szłapka (#N|RE);
-Ministro della Scienza: Dariusz #Wieczorek (Lewica/NL);
-Ministro degli Affari Legislativi: Maciej #Berek;
-Cancelliere presso l'Ufficio del Primo Ministro: Jan #Grabiec (PO);
-Coordinatore dei Servizi di Sicurezza: Tomasz #Siemoniak (PO).
@OsservatorioEsteri