TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

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

Hashtags

Резултати

Пронајдени 84 слични објави

Пребарај: #nodejs

当前筛选 #nodejs清除筛选
Tomoko RD

@tomoko_channel · Post #705 · 10.10.2024 г., 12:24

Node.js 纪录片感想(小抄) 1. Ryan Dahl 创建 Node.js 当时流行的 Web 框架(如 Ruby on Rails)在处理高并发时效率不够高,特别是在处理 I/O 密集型任务时性能显得不足。虽然这些框架也支持异步 I/O,但用起来很别扭。 他也尝试过其他语言(如 Python、Lua、Haskell),但发现这些语言的运行时已经沉淀了多年,深受传统同步编程模型的限制,很难进行根本性的变革。 于是 Boy Meet Girl,算是终于让他看见了 Javascript 这个本身就在浏览器中天天需要处理异步场景的语言。(JavaScript 本身就依赖事件循环和异步操作来处理用户交互与网络请求。) 关键点是 easily build optimal server 以及 forcing them to only use async IO。也是 Node.js 的核心优势。 2. Isaac Schlueter 加入 & npm 的诞生 这点倒是没什么好说的,pip 比它要早一点,08年 vs 10年。 想起我大二那年,被 pacman 什么都能下载给震撼住了。真的是,生在这种什么都有的年代真是被惯坏了。不过即使我在那个年代,也不会造出这样的轮子吧 3. Joyent 买下 Node.js 这一阶段就是真的让 Node.js 成为一个企业级产品了,毕竟有公司去资助一批工程师去全职开发。 也是在这个阶段支持了 Windows,让用户量大大增加了。(通过实现 LibUV 库来处理 Windows 特有的 I/O 操作和事件循环,兼容了 linux 和 win 的操作) 4. Ryan 退出 & 社区分裂 Ryan 在 Windows 版本出来之后就腻了,看来是那种喜欢写新功能而不想全天在修 BUG 的人?于是负责人从 Ryan -> Issac -> TJ Fontaine。 至于创始人离开之后,社区的贡献者自然就觉得给 Joyent 打白工非常无趣,于是就去 fork 了 io.js(确实,虽然 MySQL 是开源的,但谁会乐意无偿贡献代码给 Oracle 呢?) 5. 基金会成立 最后是双方妥协,Joyent 将 Node.js 的管理权交给了基金会, io.js 和 Node.js 最终合并。可喜可贺,可喜可贺。 不过这也是社区力量占主导才能强迫公司妥协,不然就变成现在的 MariaDB 了? --- (仅仅是笔记,不一定对,需要勘误) https://www.youtube.com/watch?v=LB8KwiiUGy0 #TIL#nodejs

Hashtags

AprilNEA's Notebook

@AprilNEALab · Post #75 · 31.08.2024 г., 14:44

#NodeJS#ORM 这么严重的问题花了一年才被修复。 https://github.com/drizzle-team/drizzle-orm/issues/724 https://github.com/drizzle-team/drizzle-orm/releases/tag/0.33.0 TL;DR Drizzle ORM 导致 JSONB 在 Postgres 数据库中错误的以 JSON String 表示

Hashtags

123•••67
ПретходнаСтраница 1 од 7Следна