Задать вопрос
@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()
вот код исправте плиз
  • Вопрос задан
  • 31 просмотр
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

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