@luckydonaldsbots · Post #186 · 23.02.2019 г., 23:32
Will be updating software of the server, expect #downtime the next hour
Hashtags
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
Пребарај: #downtime
@luckydonaldsbots · Post #186 · 23.02.2019 г., 23:32
Will be updating software of the server, expect #downtime the next hour
Hashtags
@luckydonaldsbots · Post #124 · 01.02.2018 г., 15:18
Downtime in about one hour, as an now old docker version spammed my /run/ directory making any upgrades impossible. #downtime
Hashtags
@luckydonaldsbots · Post #193 · 24.02.2019 г., 02:39
#downtime#resolved
@luckydonaldsbots · Post #191 · 24.02.2019 г., 02:11
I'm still experiencing instabilities, still on it. #downtime#in_progress
Hashtags
@luckydonaldsbots · Post #290 · 11.12.2021 г., 22:33
Also there will be a scheduled downtime for two remaining bots tomorrow, in about 16h 20h from now : - @BanWarnBot - @RulesRulesBot Those have a database, and therefore they need to be take down to not loose any changes happining while the data is moved over. #scheduled#downtime
Hashtags
@luckydonaldsbots · Post #279 · 05.12.2021 г., 14:33
Unexpected downtime: Due to an failed software update, the server is now unreachable. Working hard on resolving the issue. #downtime#unexpected
Hashtags
@luckydonaldsbots · Post #162 · 21.10.2018 г., 13:20
Apperently also @anonymize_bot is affected. Currently looking into the issue. Update: It should now be back and running, but telegram reports about two thousand updates being still unprocessed, but that is decreasing. It will recover soon, bear with me, it works as fast as telegram allows it to. Update: @anonymize_bot It is now back to normal. #Anonymize#downtime'
Hashtags
@luckydonaldsbots · Post #111 · 06.12.2017 г., 10:53
Need another downtime today, in the same timeframe (13:00 UTC), as the main server is undergoing a hardware check. The backup server however should be online as soon as the database are copied. #scheduled_downtime#downtime
Hashtags
@luckydonaldsbots · Post #108 · 29.11.2017 г., 11:39
Expected downtime: Today, 13:00 UTC. Duration 1h. Delayed, see post below. Because my current server isn't powerful enough, especially regarding Disk IO speed, I will move part of the infrastructure to a new server with SSD storage. This means I have to take down the databases, and copy them over. I'll try to keep the bots running which doesn't need a database, like @ponbot, @anonymize_bot, @HeyAdminBot, @moustache_bot, etc. #expected_downtime#downtime
Hashtags
@luckydonaldsbots · Post #251 · 04.07.2020 г., 14:51
Maintenance: Moving @BanWarnBot to the new server. Okey going through the same procedure for @BanWarnBot now, hopefully without the database breaking this time. Turning the bot off for moving the database, so any /warns send in the meantime shouldn't get lost. As soon as it's on the new server it should pick up those, and carry out the needed actions. I'll take @BanWarnBot down in 10 minutes. Other bots should not be affected. #maintenance#downtime#BanWarnBot
Hashtags
@luckydonaldsbots · Post #188 · 24.02.2019 г., 01:05
If you docker refuses to start and sudo service docker status is showing logs like this: Feb 24 01:30:06 hostname dockerd[19544]: time="2019-02-24T01:30:06.718823877+01:00" level=error msg="stream copy error: reading from a closed fifo" It might be that /var/run/docker.sock is a mount in one of your containers. Therefore if that doesn't exist - and only shortly - it will be created as a folder, thus making it impossible for docker to start. Fix it with sudo rmdir /var/run/docker.sock, and sudo service docker start. #TechnicalDetails#downtime#in_progress
@luckydonaldsbots · Post #232 · 24.03.2020 г., 10:45
I will soon migrage some services onto a new server. Therefore those services will be unavailable for the next two hours: @JoinCaptchaBot@BanWarnBot@RulesRulesBot and @ForwardWhitelistBot. #downtime #JoinCaptchaBot#BanWarnBot#RulesRulesBot#ForwardWhitelistBot