import customtkinter as ctk
app = ctk.CTk()
def resize_frame(event):
# Растягиваем frame на всю площадь canvas
canvas.itemconfig(frame_id, width=event.width-2*padx, height=event.height*2)
# Ширина и высота отступов
padx =20
pady = 20
# Canvas
canvas = ctk.CTkCanvas(app, bg="blue", highlightthickness=0)
canvas.pack(fill='both', expand=True, padx=padx, pady=pady)
# Функция привязки изменения размера Canvas
canvas.bind('<Configure>', resize_frame)
main_frame = ctk.CTkFrame(app, bg_color='white')
frame_id = canvas.create_window((20, 20), window=main_frame, anchor='nw')
scrollbar = ctk.CTkScrollbar(app, command=canvas.yview)
canvas.configure(yscrollcommand=scrollbar.set)
scrollbar.place(relx=1, rely=0, relheight=1, anchor='ne')
# наполнение
for i in range(40):
ctk.CTkButton(main_frame, text='Click Me').pack(pady=10)
canvas.update_idletasks()
canvas.configure(scrollregion=canvas.bbox("all"))
app.mainloop()
<style>
.hovered-h2 {
color: blue; /* Пример изменения цвета на синий */
}
</style>
<div>
<h2 id="textElement">GG</h2>
<img id="imageElement" src="test.png">
</div>
<script>
// JavaScript для изменения цвета
document.getElementById('imageElement').addEventListener('mouseover', () => {
document.getElementById('textElement').classList.add('hovered-h2');
});
document.getElementById('imageElement').addEventListener('mouseout', () => {
document.getElementById('textElement').classList.remove('hovered-h2');
});
</script>
.pipe(scss({ outputStyle: 'compressed' }))
.pipe(sass({ outputStyle: 'compressed' }))
const data = await this._db.collection('counters').aggregate([
{ $match: { "objectId": { $exists: true } } },
{ $project: {
_id: 0, // Исключаем поле _id из вывода
last: "$objectId.last", // Получаем значение last из объекта objectId и кладем в поле last
start: "$objectId.start", // Аналогично для start
end: "$objectId.end" // Аналогично для end
}
}
]).toArray();
// data будет массивом документов, и каждый документ будет содержать только поля last, start и end
Collect.aggregate([
{ $match: { $text: { "$search": "слово" } } },
{ $lookup: {
from: "colors",
let: { id: "$_id" }, // Определяем переменную id для использования внутри $lookup
pipeline: [
{ $match: {
$expr: { $and: [
{ $eq: ["$uid", "$$id"] }, // Сравниваем uid с id из основного документа
{ $gte: ["$rgb.r", 147] }, // Диапазон значений для красного цвета
{ $lte: ["$rgb.r", 167] },
{ $gte: ["$rgb.g", 136] }, // Зеленого
{ $lte: ["$rgb.g", 156] },
{ $gte: ["$rgb.b", 107] }, // Синего
{ $lte: ["$rgb.b", 127] },
{ $lte: ["$prevail", 1] } // Условие для поля prevail
]}
}}
],
as: "colors"
}
},
{ $match: { "colors": { $ne: [] } } }, // Фильтрация документов с ненулевым массивом colors
{ $sort: { "createdAt": -1 } },
{ $limit: 10 }
])
Collect.aggregate([
{ $match: { $text: {"$search": "слово"}} },
{ $lookup: {
from: "colors",
let: { id: "$_id" },
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: ["$uid","$$id"] },
{ $eq: ["$color", "red"] }
]
}
}
},
{ $limit: 1 } // Ограничиваем до одного документа, если нам не нужны все цвета
],
as: "colors"
}
},
{ $match: { "colors.0": {$exists: true} } }, // Проверить, что результат не пустой
{ $sort: {createdAt: -1} },
{ $skip:0 },
{ $limit: 10 }
])