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

Резултати

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

Пребарај: #demonoid

当前筛选 #demonoid清除筛选
PT资讯频道

@PrivateTrackerNews · Post #896 · 11.09.2019 г., 14:52

2019/09/11 #开放注册 #OpenSignupTracker #国外PT 电报 @PT资讯频道 Telegram @privatetrackernews 半开放综合站 Tracker Name: #Demonoid Genre: General Sign Up Link: https://www.dnoid.to/register.php Closing Time: Soon Additional Information: Demonoid is a Semi Private Torrent Tracker for Movies / TV / General Releases 土耳其零日综合 Tracker's Name: #LetSeed Genre: General Sign-up Link: http://letseed.net/signup.php Closing date: Soon! Additional information: LetSeed.net is a Turkish Private Torrent Tracker for 0-Day / General releases. 法国电影电视剧综合 Tracker's Name: #SpaceTorrent Genre: General Sign-up Link: https://www.spacetorrent.cloud/signup.php Closing date: Open for 2 days until Thursday 12th September at 11pm Additional information: SpaceTorrent is a French Private Torrent Tracker for Movies / TV / General Releases. 新站法国电影电视剧综合 Tracker's Name: DL Torrent Genre: General Sign-up Link: https://www.dltorrent.net/index.php?page=signup Closing date: N/A Additional information: DL Torrent is a new French Private Torrent Tracker for Movies / TV / General Releases.

PT资讯频道

@PrivateTrackerNews · Post #771 · 02.08.2019 г., 14:49

2019/08/02 #开放注册 #OpenSignupTracker #国内PT 整理自电报 @PT资讯频道 Telegram @privatetrackernews 经典/老电影 Tracker's Name: #ILoveClassics (ILC) Genre: Movies Sign-up Link: http://www.iloveclassics.com/signup.php Closing date: N/A Additional information: I Love Classics (ILC) is a Private Torrent Tracker dedicated mostly to older and unique content. 综合站 Tracker's Name: #Demonoid Genre: General Sign-up Link: https://www.dnoid.to/register.php Closing date: Additional information: Demonoid is a Private Torrent Tracker for General. 新站综合站 Tracker Name: #TazmaniaDen Genre: General Sign Up Link: https://tazmania-den.net/account-signup.php Closing Time: ? Additional Information: New tracker for General. 音频软件/样片 Tracker's Name: #AudioNews (AN) Genre: Other Sign-up Link: https://audionews.org/profile.php?mode=register Closing date: 24h Additional information: AudioNews (AN) is a Private Torrent Tracker for Audio Software / Samples / ETC. 综合站 Tracker Name: #4thDimension Genre: General Signup Link: https://4thd.xyz Closing Date: 3rd August 2019 Additional comments: Annual rare opening 24 hour sign up. small exclusive site no bots, selected quality fast content TV dominant. most cats but no games. Gazelle based site with active forum shout comps. Join us in the 4th Dimension #OpenApplicationSignupTracker #开放申请注册 漫画 Tracker's Name: #32Pages (Open for Application Signup) Genre: Other Sign-up Link: https://32pag.es/application.php Closing date: N/A Additional information: 32Pages is a Private Torrent Tracker for Comic Books.