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

Резултати

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

Пребарај: #posix

当前筛选 #posix清除筛选

#UNIX#POSIX 问题:如何正确理解 Permission denied 和 Operation not permitted 之间的区别? 答案: TL;DR: Permission denied: 老兄,你越界了,这个真不行。 Operation not premitted: 老兄,你在说什么鬼话? Permission denied 通常用于表示明确的因为权限设置导致的拒绝。 Operation not premitted 通常用于表示因为设计原因所不被允许的操作。 不过在实际的开发中,有的人似乎并不care这些,因此你也会见到因为权限策略拒绝时返回的 Operation not premitted 错误。(例如SELinux)

Hashtags

AIGC

@aigcrubbish · Post #84 · 06.11.2025 г., 16:21

Freedesktop.org now hosts the Filesystem Hierarchy Standard 文件系统层次结构标准(FHS)现已由Freedesktop.org托管和管理。FHS定义了POSIX操作系统如何组织系统和用户数据,被Linux、BSD及其他遵循POSIX规范的系统广泛采用。这一变动结束了此前关于FHS未来发展的讨论。 新规范页面可在此查看:https://specifications.freedesktop.org/fhs/latest/ #Linux#POSIX#文件系统标准#开源 #AIGC Read more

GitHub Trends

@githubtrending · Post #15246 · 24.10.2025 г., 13:30

#go#blob_storage#cloud_drive#distributed_file_system#distributed_storage#distributed_systems#erasure_coding#fuse#hadoop_hdfs#hdfs#kubernetes#object_storage#posix#replication#s3#s3_storage#seaweedfs#tiered_file_system SeaweedFS is a fast, simple, and highly scalable distributed file system designed to store billions of files and serve them quickly, especially small files. It uses a master server to manage volumes on volume servers, which handle file data and metadata, enabling very fast file access with minimal disk reads. It supports features like replication, erasure coding, cloud integration for elastic storage, and compatibility with many metadata stores and APIs including Amazon S3. This means you get efficient, cost-effective storage with fast access, easy scaling, and flexible deployment options for large-scale file storage needs. https://github.com/seaweedfs/seaweedfs