Регулярно приходится писать и ревьюить код, где используется PySide2-6.
Заметил, что в подавляющем большинстве случаев настройка создаваемых базовых виджетов происходит через методы. Думаю, всем знаком такой способ.
Простой пример с кнопкой:
button = QPushButton("Click Me")
button.setMinimumWidth(300)
button.setFlat(True)
button.setStyleSheet("font-size: 20pt")
button.setToolTip("Super Button")
button.clicked.connect(lambda: print("Button clicked"))
Но есть и альтернативный способ - настройка через свойства. Это просто ключевые аргументы конструктора класса. Хоть они и не указаны в документации как аргументы, но они есть)
Этот код делает тоже самое но с помощью Property
button = QPushButton(
"Click Me",
minimumWidth=300,
flat=True,
styleSheet="font-size: 20pt",
toolTip="Super Button",
clicked=lambda: print("Button clicked"),
)
Где это может быть полезно
▫️ Это выглядит более аккуратно и коротко, уже повод использовать
▫️ Может использоваться в заполнении лейаута, когда нам не нужно никакое другое взаимодействие с виджетом и поэтому сохранять его в переменную не требуется. Например, лейбл или кнопка.
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
layout.addWidget(QLabel("Button >", alignment=Qt.AlignRight))
layout.addWidget(QPushButton("Click Me", clicked=lambda: print("Button clicked")))
widget.show()
Либо так
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
for wd in (
QLabel("Button >", alignment=Qt.AlignRight),
QPushButton("Click Me", clicked=lambda: ...)
):
layout.addWidget(wd)
widget.show()
▫️ Можно хранить настройки в каком-то конфиге или генерировать на лету, после чего передавать как kwargs.
kwargs = {"text": "Hello " * 30, "wordWrap": True}
my_label = QLabel(**kwargs)
Как получить полный список доступных свойств?
Эта функция распечатает в терминал все свойства виджета и их текущие значения
def print_widget_properties(widget):
meta_object = widget.metaObject()
for i in range(meta_object.propertyCount()):
property_ = meta_object.property(i)
property_name = property_.name()
property_value = property_.read(widget)
print(f"{property_name}: {property_value}")
#tricks#qt
High Protein Wan Tan
Ingredients:
For the dough:
- 250 g flour 🌾
- 1 tsp salt 🧂
- 100 ml warm water 💧
For the filling:
- 1 cm ginger 🫚
- 100 g soy granules 🌱
- 2 spring onions 🧅
- 2 cloves of garlic 🧄
- 3 mushrooms 🍄
- 1 carrot 🥕
- 4 tbsp soy sauce 🧴
- 1 tbsp starch 🌿
Additionally:
- oil for frying 🛢️
- 100 ml water for steaming 💦
#HighProtein#WanTan#HealthyEating#Vegan
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶️
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
High Protein Zucchini Frittata 🥒🍅
Ingredients:
• 450 g chickpea flour 🌱
• 800 ml water 💧
• 1 zucchini 🥒
• 10 cherry tomatoes 🍅
• 2 onions 🧅
• 1 tsp turmeric 🌞
• 1 tsp Kala Namak 🧂
• 1 tsp paprika powder 🌶️
• Pinch of salt & pepper 🧂
Toppings:
• Cherry tomatoes 🍅
• Onion rings 🧅
• Italian herbs 🌿
Preparation:
1️⃣ Mix chickpea flour with water and season 🌱
2️⃣ Add vegetables and let rest for 10 minutes ⏳
3️⃣ Heat some oil in a pan and add the mixture; decorate with toppings 🥄
4️⃣ Cover and cook on low heat for 20 minutes 🔥⏳
#FrittataTime#HighProtein#ZucchiniRecipe#VeganDelight#HealthyEating#PlantBasedCooking
@dishes
High Protein Sweet & Sour Udon Noodles 🍜💪
Ingredients:
- 250 g udon noodles 🍜
- 80 g pea or soy medallions 🌱 (vegetable broth)
- 2 carrots 🥕
- 100 g sugar snap peas 🍃
- 200 g mushrooms 🍄
- 1/2 bunch of spring onions 🧅
Sauce:
- 2 tbsp sesame oil 🌾
- 1 tbsp soy sauce 🧂
- 3 tbsp agave syrup 🍯
- 2 tbsp rice vinegar 🍚
- 50 ml pasta water (from the udon noodles) 💧
- 1 tsp sesame seeds 🌿
- 1 tsp chili flakes 🌶️
Instructions:
1. Cook udon noodles in boiling water as per instructions. Save 50 ml of pasta water. 🍲
2. In vegetable broth, cook soy or pea medallions until tender. 🥄
3. Slice carrots, sugar snap peas, mushrooms, and spring onions. 🍄🥕🍃
4. Heat sesame oil in a pan, add veggies, and stir-fry until tender-crisp. 🍳
5. Add soy sauce, agave, rice vinegar, pasta water, sesame seeds, and chili flakes to the pan. 🍶
6. Combine everything, serve, and enjoy! 😋
#SweetAndSourNoodles#HighProtein#PlantBased#UdonLove#HealthyEats#VeganNoodles#QuickMeals#FoodieFun
@dishes
High Protein Red Cabbage Rolls
Ingredients:
🥬 1 large red cabbage
🫚 4 cm ginger
🧄 3 cloves of garlic
🥕 2 carrots
🫑 2 peppers
🧅 2 spring onions
🌱 100 g soy granules
🍶 50 ml soy sauce
Toppings:
✨ Sesame, 🌿 fresh parsley, 🌶 chili flakes
Dip:
🍯 Sweet Chili Sauce
#HighProtein#RedCabbageRolls#HealthyEating#PlantBased#EasyRecipe#SoyGranules#VeggiePower#Flavorful#MealPrep
@dishes