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

Резултати

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

Пребарај: #qulelc

当前筛选 #qulelc清除筛选

01111000001010010110011001001111011011110100110100111010011010100110101001010101010110010110100000111000010101010111 10100110000000111000011001100101001000101000010110000111101100110000010001010011001101101010010011100011110101001001 00110001011000110110110101101100011000110110101001011000001110000110010101000101011110110111100100110001010010000010 10100011011001001101011000100010011000101010001101100110010000111110011001100101011100110011010001110011100001000110 01000010011011110100111001100000010010010010001101001111011111010110001101100000011011100101111100111010011100100011 10110110111100100100010000100101000000101100001010000010000101011010001010000101100100101111011001100101011100110000 00101111001101010101011001110000001111110101001100110101001101110010100101000100011100000110111001111110001011110101 00100111101001111100001100000100011001001110011100000100111101010010011000100010011001111000011011100110110000101010 01110111001111100100101000101111001000010011110100111111010010100101001000101100001010110011010001110111001001000110 01010110111001001101001111100110011000100010011010000111001001110110001111110101000001001000010101010010110001100001 00100011010100100101000000110101001111000011101000111111010110110111001101100101011101000100100101110100010100100111 00110010110001110110011000100111000101111010011011100111100001100010001101110010111100100011011100010101010101001100 01100101010100000100001101000000011000010011111101010010011010110011101000111111001101010011111100111111001110110011 01110110000000111000010100000110110101000100011001010111100001110100011010010111101001110010011110000011001100100011 01110001010011110011001001011010011100010110110000101000011011000110110001100100011101010100100001011101001111100101 01010011000000111001010010010101110101010000010100000110000101110100011000100110100100110010011011100100101000110000 00111011011101000100100000100110010101000011000101101010001000010010101001010100011010010111100001111010001111110100 01110110110100111001001111100101100101011101001000110110101000101010010111110100010100101001011001100101111001110001 01001101011001000100110101101011011110110100110101000100000010100000101001000010001110010011000100000000000000000000 byteToAscii: tool: https://cryptii.com/pipes/binary-decoder to: {t>Jt#c@JR,+4wbdo5>f#i~*$8|T:Z#RL5R;4+setItRQPtbZ2nxb7%#qULeLC@a?Rjd`5??;7`8?mDextUd$ifHsO2Zql(lUguH]>=5hM]PPa]ci2nJ?:?B&T1j!*rayzUH36>Y[#~(_Ekf_nG<jjUYh8Uz~8"Q"i{0E3jN=IzcmlcjW8eE{y(j+6Mb%Y7d]f<1G8HBp6l*Rl`c`n_:r;I$C8,(!Z(Y/fe0"2Vp?SL9)DpnL,fxn)FN)N:g&xnl*w>J/!=?VN,+4w$enM>f"h~*$8|TGl#RP5<:?[setI?Ls,vbqznxb7%#r%LeLCrZ?Rk:06??;7|84bDeytUd$i3#6O}Tql(lVdBe]>c09I=uLa]ci2nJ0;?B&T"k3+Tiyz?Gm9>Y&#j*xkf_nz1jjUYh8Uz~8"Q"i{0E3]M=I1c2lcjX8eE{y1H*6=Z&*6d]ff<G8FB(M`ISl`c`n_:r;o$BP,(3OgR/fe0/5&S?S%7)Dpn~/Rz|0HN)N:g&x*l*w>J/!=?VN,+owbdo5{f"hrv$8|TGl#RL5R;?[setItRs,vb$znxb7%#8!LeLCrZ?Rk:06??;7`8PmDextUd$ifHsO}Tql(lEguH]>=5hM=uPatb5%nJ;:?B&T1j!*Tiyz?Gm9>Y%#j*_E)fOoM:jjcYh8Uz`8fR"ige"2jN=I1cml`oX8WE*1(j+6=Z&*6d]fW3G8FBp6l*!O}cRz_:r;q6C8,(>Z(Y/fe0/5&S?SL9)DpnL,fxn)HNpORb&xnl*w>Jt#c@W6,+4wbdnM>f"h~*?PHUDm#RL5R;4+qe9I?LQPtb$znxa7/#8!LePC@a?Rk:06??;7`84bDext&zrx3#6O}Tr](lUgBe]>=5hM]PLa]ci2nJw;tH&T}k3+rayz?G36>Y&#j*`xkf_nz1jjUYh8&/`8fR(X{0E3jN=I1cml`oW8WE*1(j+6&Z%Y7d>f<1G8HBoN`ISladRz_:s;I$C8,(nOgR9Df0"2&S?S%7APpn/Rz|0FN)N:g&x*l{t>Jt#c@VN,+4w$eo5{f"hrv$8|TGl#RL5<:?[se9ItRQPtb$znxb7%#r%LeLCrZ?Rjd66??;7|8^aDextizrxfHsO}Tql(lVdBe]>c09I]PPatbi2nJw;tH&T}k3+rayzUH36>Y[#j*_E)fOoM:jjUYh8&/~8fR(Xge"2jN=I1cml`oW8eE*1(j+6Mb%Y7d>f)=G8FBp6l*!Odd`n_:s;o$C8,(!Z(Y9Df0/5&S?S%7)DpnP,fxn)FN)NRb&xnl*w>Ju#c@JR,+4wbdnM{f"hrv?PHUDm#RL5<:4+se9I?LQPtbv2nxa7/#qULeLC@a?Rk:?5gM<7`84bDeytUd$i3#6O}Tr](lVdBe]>U09I]PPa]ci2nJ;:?B&T}k3+rayz?G36>Y]#~(`x)fOoM:jjUYh8Uz`8fR(X{0E3jN=I1cmlcjX8eE{y1H*6Mb&*6d>fW3G8FBoN`I#O}c`n_:r;o$BP,(!Z(Y/fW0/5Vp?S57)Dpn~/Rz|0FNpORb&xnl*w>J/!=?JR,+4w$enM>f"hrv?PHU,a#RP5<:?[setItRs,vbqznxb7/#qULePC@a?Rk:?5??;7`8PmDextizrx3#qO2Zql(llduH]>U09I]PPatbi2nJ0;tH&T1j!*Tixz?Gm9>Y]#j*_E)f^qMdMk{MD