Задать вопрос
@Ha4er

Создал код и когда пишу в powershell pyinstaller --onefile --windowed --icon=icon.ico testret.py пишет IndexError: tuple index out of range?

import tkinter as tk
from tkinter import filedialog, messagebox
import os
from sympy import sympify # type: ignore
import pyttsx3 # type: ignore

# Инициализация синтезатора речи
engine = pyttsx3.init()

# Функция для озвучивания текста
def speak(text):
    engine.say(text)
    engine.runAndWait()

# Создание окна
window = tk.Tk()
window.title("TESTRET")
window.geometry("800x600")
window.configure(bg="black")  # Черный фон

# Функция для загрузки данных
def load_data():
    data_folder = r"C:\ChatGPT\dist\data123"  # Папка, куда будем сохранять данные
    if not os.path.exists(data_folder):
        os.makedirs(data_folder)  # Создаем папку, если ее нет

    # Получаем путь к файлу для загрузки
    file_path = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])  # Открыть диалог выбора файла
    if file_path:
        try:
            with open(file_path, "r", encoding="utf-8") as file:
                data = file.read()  # Чтение содержимого файла

            # Находим следующее доступное имя файла
            existing_files = [f for f in os.listdir(data_folder) if f.endswith(".txt")]
            next_file_num = len(existing_files) + 1
            new_file_name = f"txt{next_file_num}.txt"

            # Сохраняем данные в новый файл
            new_file_path = os.path.join(data_folder, new_file_name)
            with open(new_file_path, "w", encoding="utf-8") as new_file:
                new_file.write(data)

            messagebox.showinfo("Загружено", f"Файл сохранен как {new_file_name}")  # Уведомление о том, что файл загружен
        except Exception as e:
            messagebox.showerror("Ошибка", f"Не удалось загрузить файл: {e}")  # Показать ошибку, если не удается загрузить файл

# Функция для открытия базы данных
def open_database():
    data_folder = r"C:\ChatGPT\dist\data123"  # Папка, где хранится база данных
    if os.path.exists(data_folder):
        os.startfile(data_folder)  # Открыть папку с данными
    else:
        messagebox.showerror("Ошибка", "Папка с данными не найдена!")  # Если папка не существует, показать ошибку

# Пример гигантского кортежа
numbers_tuple = tuple(range(1, 1000001212121))  # Кортеж с 1 миллионом элементов

# Функция, которая будет работать с кортежем
def use_tuple():
    try:
        # Пример использования кортежа: вычисляем сумму всех элементов
        result = sum(numbers_tuple)
        messagebox.showinfo("Результат", f"Сумма чисел в кортеже: {result}")
    except IndexError as e:
        messagebox.showerror("Ошибка", f"Ошибка индекса: {e}")
    except Exception as e:
        messagebox.showerror("Ошибка", f"Произошла ошибка: {e}")

# Функции для калькуляторов
def simple_calculator():
    def calculate():
        try:
            result = sympify(entry.get())  # Преобразовать введенную строку в математическое выражение
            result_label.config(text="Результат: " + str(result))
        except Exception as e:
            result_label.config(text="Ошибка: " + str(e))  # Показать ошибку, если выражение некорректное

    calc_window = tk.Toplevel(window)
    calc_window.title("Калькулятор")
    calc_window.geometry("300x300")
    calc_window.configure(bg="black")

    entry = tk.Entry(calc_window, width=25, font=("Arial", 14), fg="orange", bg="black", insertbackground="orange")
    entry.pack(pady=20)

    calc_button = tk.Button(calc_window, text="Рассчитать", command=calculate, font=("Arial", 14), fg="black", bg="orange")
    calc_button.pack(pady=10)

    result_label = tk.Label(calc_window, text="Результат: ", font=("Arial", 14), fg="orange", bg="black")
    result_label.pack(pady=10)

def engineering_calculator():
    def calculate():
        try:
            result = sympify(entry.get())  # Преобразовать введенную строку в математическое выражение
            result_label.config(text="Результат: " + str(result))
        except Exception as e:
            result_label.config(text="Ошибка: " + str(e))  # Показать ошибку, если выражение некорректное

    eng_calc_window = tk.Toplevel(window)
    eng_calc_window.title("Инженерный калькулятор")
    eng_calc_window.geometry("300x300")
    eng_calc_window.configure(bg="black")

    entry = tk.Entry(eng_calc_window, width=25, font=("Arial", 14), fg="orange", bg="black", insertbackground="orange")
    entry.pack(pady=20)

    calc_button = tk.Button(eng_calc_window, text="Рассчитать", command=calculate, font=("Arial", 14), fg="black", bg="orange")
    calc_button.pack(pady=10)

    result_label = tk.Label(eng_calc_window, text="Результат: ", font=("Arial", 14), fg="orange", bg="black")
    result_label.pack(pady=10)

# Главное окно
main_frame = tk.Frame(window, bg="black")
main_frame.pack(padx=10, pady=10)

# Кнопки для загрузки данных, открытия базы данных и калькуляторов
load_button = tk.Button(main_frame, text="Загрузить данные", command=load_data, font=("Arial", 14), fg="black", bg="orange")
load_button.grid(row=0, column=0, padx=10, pady=10)

db_button = tk.Button(main_frame, text="Посмотреть базу данных", command=open_database, font=("Arial", 14), fg="black", bg="orange")
db_button.grid(row=1, column=0, padx=10, pady=10)

calc_button = tk.Button(main_frame, text="Простой калькулятор", command=simple_calculator, font=("Arial", 14), fg="black", bg="orange")
calc_button.grid(row=2, column=0, padx=10, pady=10)

eng_calc_button = tk.Button(main_frame, text="Инженерный калькулятор", command=engineering_calculator, font=("Arial", 14), fg="black", bg="orange")
eng_calc_button.grid(row=3, column=0, padx=10, pady=10)

tuple_button = tk.Button(main_frame, text="Использовать кортеж", command=use_tuple, font=("Arial", 14), fg="black", bg="orange")
tuple_button.grid(row=4, column=0, padx=10, pady=10)

exit_button = tk.Button(main_frame, text="Выход", command=window.quit, font=("Arial", 14), fg="black", bg="orange")
exit_button.grid(row=5, column=0, padx=10, pady=10)

# Запуск главного окна
window.mainloop()


Вот код исправьте плиз.
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
xottsy
@xottsy
не существует индекса в tuple
Ответ написан
Комментировать
chuikoalex
@chuikoalex
Викторович
67c9ee2a7f81f903258710.jpeg

Ну если поравить numbers_tuple, то все без проблем собирается...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы