Можно ли настроить функцию, чтобы при нажатии на кнопку происходила автоматическая заливка ячейки?

Как можно организовать фиксацию применения клавиш для выполнения определенных действий, например, заливки желтым при нажатии на клавишу Y и заливки зеленым при нажатии на клавишу U?
  • 22 ноября 2023 г. 13:31
Ответы на вопрос 3
Да, можно настроить функцию, чтобы при нажатии на кнопку происходила автоматическая заливка ячейки.

Вот пример кода, который делает именно это:

```python
import tkinter as tk
from functools import partial
from openpyxl import Workbook, load_workbook
from openpyxl.styles import PatternFill

def fill_cell(color):
    # Открываем книгу Excel
    workbook = load_workbook('example.xlsx')

    # Выбираем активный лист
    sheet = workbook.active

    # Получаем текущие координаты ячейки
    current_cell = sheet.cell(row=1, column=1)

    # Задаем цвет заливки
    fill = PatternFill(start_color=color, end_color=color, fill_type="solid")

    # Заливаем ячейку выбранным цветом
    current_cell.fill = fill

    # Сохраняем изменения в файле
    workbook.save('example.xlsx')
    workbook.close()

def on_button_press(key):
    if key.char == 'y':
        fill_cell("FFFF00") # Заливка желтым
    elif key.char == 'u':
        fill_cell("00FF00") # Заливка зеленым

# Создаем окно tkinter
root = tk.Tk()
root.geometry('300x200')

# Создаем кнопки
button_y = tk.Button(root, text="Заливка желтым (Y)", command=partial(fill_cell, "FFFF00"))
button_y.pack()

button_u = tk.Button(root, text="Заливка зеленым (U)", command=partial(fill_cell, "00FF00"))
button_u.pack()

# Назначаем обработчик нажатия клавиш
root.bind('<Key>', on_button_press)

# Запускаем цикл обработки событий tkinter
root.mainloop()
```

Этот код использует библиотеку "openpyxl" для работы с файлами Excel. При нажатии на кнопку "Заливка желтым (Y)" или "Заливка зеленым (U)" происходит вызов функции `fill_cell`, которая открывает файл Excel, выбирает активный лист, определяет текущую ячейку и затем применяет заданный цвет заливки к этой ячейке. Затем функция сохраняет изменения в файле.

Функция `on_button_press` назначается в качестве обработчика нажатия клавиш. Она проверяет, какая клавиша была нажата, и вызывает функцию `fill_cell` с соответствующим цветом заливки.

Кроме того, код создает окно tkinter, в котором размещаются кнопки для ручной заливки ячеек выбранными цветами. Кнопки также связаны с функцией `fill_cell` с соответствующим цветом заливки.

Обратите внимание, что для работы этого кода вам понадобится установить библиотеку "openpyxl" с помощью команды `pip install openpyxl`. Также убедитесь, что файл `example.xlsx` существует в том же каталоге, что и код. Если этот файл не существует, ошибка может возникнуть при попытке открыть его для редактирования.
function onEdit(e) {
  if (e && e.source) {
    var sheet = e.source.getSheetByName('Новая таблица'); // Укажите название вашего листа между кавычками, в моем случае это "Новая таблица"
    if (e.value === 'Y') {
      var range = e.range;
      range.setBackground('#ffff00');
      range.setValue('');
    }
  }
} 
 Чтобы использовать этот скрипт, просто скопируйте его и вставьте в раздел "App Scripts" вашего расширения. Затем обратно перейдите к вашей таблице в Google, обновите страницу и введите "Y" в любую ячейку, затем нажмите Enter. Скрипт начнет работать через несколько секунд.
Похожие вопросы