Регулярно приходится писать и ревьюить код, где используется 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
Геотермальная энергия, когда же уже?
Три года назад издание Vox опубликовало классную статью "Geothermal energy is poised for a big breakout", в которой дается обзор этого источника энергии и технологий для добычи геотермальной энергии. Очень интересно и познавательно, почитайте - ссылка! Статья написана в позитивном ключе, что мол даже 0.1% тепловой энергии Земли достаточно, чтобы обеспечить энергией все человечество на 2 миллиона лет вперед, и технологии на подходе.
Неделю назад, это же издание опубликовало более отрезвляющий материал "Is the future of energy ... pouring water on hot rocks in the ground?", написанный по следам успехов компании Fervo, которая впервые добилась результатов по генерации электричества в промышленных масштабах с помощью технологии усоверщенствованных геотермальных систем (ESG), я писал об этом тут. Авторы пишут, что технология конечно работает, но стоимость решения на данный момент $450 за киловатт, в то время как ветер и солнце дают $30-50 за киловатт. Пока технология добычи геотермальной энергии настолько неэфективна, что при циркуляции воды внутри системы, ее потери составляют до 20%, что собственно, даже дороже конечного продукта, поставляемого электричества. Статья.
Если кто-то хочет начать разбираться в том как работает добыча энерегии с помощью геотермальных систем, я советую прочитать обе статьи. Вторая, конечно, своего рода ложка дегтя. Но если посмотреть с другой стороны, инженеры, работающие в геотермалке должны трезво смотреть на мир и попытаться найти технологические решения, которые действительно помогут в масштабировании технологии.
#geothermal#climate
Нефтяные скважины для геотермальной энергии
В Оклахоме тысячи никому не нужных нефтегазовых скважин. Стоят себе. Их нужно законсервировать или использовать для извлечения энергии. Товарищи из Университета в Оклахоме сделали инструмент, для быстрой выборки нефтяных скважин, которые могут быть перепрофилированы в геотермальные.
В основе инструмента известные статистические методы: метод K-ближайших соседей и Кригинг (гауссовские процессы). Для оценки возможных кандидатов анализировались три фактора: температура, близость к конечному пользователю и целостность скважины.
Тема интересная. Департамент Энергетики США сейчас выделяет гранты проектам за доступ к геотермальному потенциалу заброшенных нефтяных и газовых скважин, например ICE Thermal Harvesting или Transitional Energy.
#geothermal#startup#oil&gas
Геотермальный прорыв Fervo Energy
Тим Латимер, CEO геотермального стартапа Fervo Energy, сообщил об успешном завершении полномасштабного пилотного проекта "Project Red", который способен генерировать 3.5 мегаватта электричества. Project Red будет подключен к сети и запитает в том числе гугловские дата центры.
История крутая. Еще 10 лет назад Тим работал буровым инженером и понял, что нефтегазовые технологии достаточно продвинутые и дешевые, чтобы их применить в создании усовершенствованных геотермальных систем (ESG), на второй картинке. Это когда после гидроразрыва пласта закачивают холодную воду, а выкачивают горячую. С ним мало кто соглашался и он пошел в Стэнфорд поучиться, где написал, научные работы, подтверждающие его гипотезы и нашел сооснователя Fervo Energy. Шесть лет они выхватывали кучу хейта, так как технология ESG считалась слишком сырой и не готовой для коммерциализации.
И вот недавно, оба кофаундера выпустили отчет, где отчитались об успешном завершении первого в своем роде ESG пилотного проекта в Северной Неваде - Project Red. Бурили в вулканические породы при температурах около 200 градусов по Целльсию. В общем начался опять движ в геотермалке. Стоит сказать, что затраты на получение энергии с помощью этой технологии все еще слишком велики.
Вот тут можно почитать подробнее.
#geothermal#technology#drilling#decarbonization