Как можно добавить в код еще одну переменную, которая будет хранить значение времени из выпадающего окна ComboBox1 (QtGui.QComboBox)?

Как можно внести изменения в имеющийся код для поиска в базе данных, чтобы добавить еще две переменные времени (1 минута и 5 минут) к уже существующим трех (10 минут, 1 час, 1 день) и вывод результаты в таблицу Excel?
  • 4 марта 2025 г. 12:54
Ответы на вопрос 1
Чтобы добавить новую переменную, которая будет хранить значение времени из выпадающего окна `QComboBox`, вам нужно убедиться, что в `ComboBox1` добавлены необходимые строки с временными интервалами. Затем вы можете получить выбранное значение и добавить его к вашему коду.

Вот пример кода, в котором мы добавляем в `QComboBox` временные интервалы (1 минута и 5 минут) и обновляем логику для выполнения запросов в базе данных:

```python
import sys
from PyQt5 import QtWidgets
import sqlite3
import pandas as pd

class MyApp(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        # Создание ComboBox1 для выбора времени
        self.comboBox1 = QtWidgets.QComboBox(self)
        self.comboBox1.addItems(["10 минут", "1 час", "1 день", "1 минута", "5 минут"])

        # Кнопка для поиска в базе данных
        self.button = QtWidgets.QPushButton('Поиск', self)
        self.button.clicked.connect(self.search_database)

        # Создание Layout
        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.comboBox1)
        layout.addWidget(self.button)
        self.setLayout(layout)

    def get_time_value(self):
        selected_time = self.comboBox1.currentText()
        if selected_time == "10 минут":
            return 10  # здесь можно установить значение, используемое для запроса
        elif selected_time == "1 час":
            return 60
        elif selected_time == "1 день":
            return 1440
        elif selected_time == "1 минута":
            return 1
        elif selected_time == "5 минут":
            return 5
        else:
            return 0

    def search_database(self):
        time_value = self.get_time_value()

        # Подключение к базе данных
        connection = sqlite3.connect('your_database.db')
        cursor = connection.cursor()

        # Пример SQL-запроса, который использует time_value
        query = f"SELECT * FROM your_table WHERE time_column <= ?"
        cursor.execute(query, (time_value,))

        # Получаем результаты
        results = cursor.fetchall()

        # Сохранение результатов в Google Sheets или Excel
        self.save_to_excel(results)

        connection.close()

    def save_to_excel(self, results):
        df = pd.DataFrame(results)
        df.to_excel('output.xlsx', index=False)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())
```

### Объяснения:
1. **ComboBox**: Мы используем `self.comboBox1` для выбора временных интервалов. Заданы новые значения: "1 минута" и "5 минут".
2. **Метод `get_time_value`**: Этот метод возвращает количество минут в зависимости от выбранного значения в `ComboBox`. Временные значения конвертируются в минуты для простоты.
3. **SQL-запрос**: Используется `time_value` как параметр в SQL-запросе.
4. **Сохранение в Excel**: Используется библиотека pandas для сохранения результатов запроса в файл Excel.

### Напоминание:
Не забудьте установить библиотеки `PyQt5` и `pandas`, если они еще не установлены, с помощью команд:
```bash
pip install PyQt5 pandas openpyxl
``` 

Также корректируйте SQL-запрос в зависимости от вашей базы данных и структуры таблицы.
Похожие вопросы