Установить свойства виджета в 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
#Topic: 📌🏙Town and City🌆📌
Ten useful collocations, phrasal verbs and expressions for speaking (+definitions)
🖇to close down~ to stop doing business
🖇to get around ~ to travel around
🖇high-rise flats ~ multi-story apartments
🖇office block ~ a large building that contains offices
🖇pavement cafe ~ cafes with tables outside on the pavement
🖇residential area ~ an area where people live
🖇shopping malls ~ large indoor shopping centres
🖇sprawling city ~ a city that has grown over time and which covers a wide area
🖇upmarket shops ~ expensive fashionable shops
🖇public spaces ~ areas in a town or city that are open to the public
Prepared by Mr Andrews
👉@IELTS_with_Steven👈
🔹Obstacle: a thing that blocks one's way or prevents or hinders progress.
🔹Breakthrough: an important development that may lead to an achievement or agreement (make/achieve a breakthrough)
🔹Scrape through (an exam): only just succeed in passing an exam.
🔹Make a go of sth: (inf) make sth succeed specially a business or marriage
➕➕➕➕➕➕➕➕➕➕➕
⚜Tellus about your experiences in this regard and try to use the abovewords and expression in your writing.
#Topic
#Teamjimmy
@Sirjimmy
🔸Outstanding (adj) exceptionally good.
🔹Bias (n) A concentration on or interest in one particular area or subject.
🔸To rise to stardom (expression): to become famous.
🔹Public figure (n): a well-known and notable person.
🔸Paparazzi (n) a freelance photographer, especially one who takes candid pictures of celebrities for publication.
➕➕➕➕➕➕➕➕➕➕➕
⚜Tellus about your experiences in this regard and try to use the abovewords and expression in your writing.
#Topic
#Teamjimmy
@Sirjimmy
🎙🌀 Speaking Activity 🌀🎙
Genetic engineering is an important issue in modern society.
Some people think that it will improve people’s lives in many ways.
Others feel that it may be a threat to life on earth.
⚜️Please discuss on both opinions and tell us about your experiences in this regard.
#Topic
#speaking
#Essay#IELTS
#Teamjimmy
@Sirjimmy
It is an educational group for English learners of different levels, from beginners till advanced( who speak fluently). How we practice English here: 1) 👩🏫”every”day SPEAKING topic is pinned,to find it here press #topic.To take part in it, find the topic, press on it- reply and answer the questions by giving the full answer (not short), essay or a speech presentation by recording your voice, then tag admins or some members who can check your pronunciation or grammar mistakes. You can also find here a speaking partner and practice together by exchanging different opinions, healthy debates, ask extra questions . 2) 👨🏫 LISTENING skills (quiz) press #test_of_theday or #listening_quiz or #audio 3)👩🏫learn and make sentences with new IDIOMS and WORDS of the day, press #idiom_of_the_day#test_of_the_day or #word_of_the_day. Whenever u need some GRAMMAR tips press #grammar_in_brief, SPELLING press #spelling or #common_mistakes4) On Sundays PRONUNCIATION class at 7pm Iranian time. The host is an American professional university teacher- Fatima g. 5) 👩🏫for any assistance ask ADMINS @SB838@Scud21 6) 👨🏫read and record in order to practice your PRONUNCIATION skills and fluency press #readrecord. Press reply, read text and record your voice 7) 👩🏫 Don’t forget to check our GROUP FILES files- downloaded books, curriculums, useful information( music, vocal messages of other members,photos), 8) 👨🏫 CHAT with people from Ireland, Iran,Yemen, India, Brazil,Uzbekistan, Iraq, , Indonesia, Korea, Africa, Turkey, UAE etc. and practice your English. Try to start your conversation politely with a neutral phrase: Hello guys, I’m...... a new member, from...... Nice to meet you. 9) 👩🏫 when we have some free time, we play a game which is called- Crocodile 🐊- when one member is a host who sees the word, gives some hints( explains this words without naming it) and other members guess the word by typing it in chat. So you can practice reading , listening, writing, grammar, speaking
#Start#contents#index#mark
This channel publishes groups and channels according to a main directory and several subject sub-directories for index search
The search keywords are as follows:
One type of keywords:
Nine categories of first-level keywords
Two types of keywords:
Second-level keywords + geographic region + language family
1. Telegraph #telegram#Promotion
#Group#channel#robot
#Search#index#navigation
2. Resources #Resources#Share
#Sharing#Welfare#moive#music#Books
3. Broadcasting #Broadcasting
#message#info#news#blog
4. Chat category #Chat
#chitchat#communication#city#area
#Chinese#English#language#country
#Mainland#HongKong#Taiwan
5. Computer category #Computer
#Hardware#software#VPN#programming
6. Life category #life
#Entertainment#Game#Funny#Anime
#Live#tourism
7. Subjects #Subjects
#Interest#hobbies#topic
8.Industry #Industry#business
9.To be classified
#notes Unclassified