from customtkinter import *
from random import randint
class Standard:
def __init__(self, master):
self.master = master
self.deside = None
self.range = None
self.guessed = []
self.steps = 0
self.main_list = []
self.total_guessed = 0
# UI Elements
self.range_lbl = CTkLabel(master, text='Введите число, ограничивающее диапазон:')
self.cycle_lbl = CTkLabel(master, text='Введите количество циклов:')
self.range_etr = CTkEntry(master)
self.cycle = CTkEntry(master)
self.start_count_btn = CTkButton(master, command=self.operate, text='Начать')
self.result_lbl = CTkLabel(master, text='Результаты: ')
self.info_box = CTkScrollableFrame(self.master, width=350)
# Layout
self.range_lbl.pack()
self.range_etr.pack()
self.cycle_lbl.pack()
self.cycle.pack()
self.start_count_btn.pack(pady=20)
self.result_lbl.pack()
self.info_box.pack()
def operate(self):
self.guessed = [] # Сбросить список угаданных
self.steps = 0 # Сбросить шаги
self.result_lbl.configure(text='Результаты: ') # Сбросить текст метки с результатами
try:
self.start_count_btn['state'] = 'disabled' # Отключите кнопку
self.range = randint(0, int(self.range_etr.get())) # Диапазон
CTkLabel(self.info_box, text=f"\nСлучайное число: {self.range} ").pack()
for i in range(int(self.cycle.get())): # Убираем +1, чтобы цикл работал от 0 до cycle
self.deside = randint(0, int(self.range_etr.get()))
if self.deside not in self.guessed:
self.guessed.append(float(f'\n{self.steps}'))
self.steps += 1
if self.deside == self.range:
self.main_list.append(self.steps)
self.total_guessed += 1
result_text = f'Шаги: {self.steps}\n' # Преобразуем в строку
CTkLabel(master=self.info_box, text=self.result_lbl.cget('text') + result_text).pack()
CTkLabel(master=self.info_box, text=f"\n1 {self.steps},"
f"\n\n2 {self.main_list}, "
f"\n\n3 {self.total_guessed}, "
f"\n\n4 {self.range}, "
f"\n\n5 {self.deside},"
f"\n\n6 {self.guessed}",
anchor=CENTER,
).pack()
self.steps = 0
self.guessed = [] # Сбросить угаданные после успешного угадывания
self.range = randint(0, int(self.range_etr.get())) # Генерация нового числа
CTkLabel(self.info_box, text=f"\nНовое число:, {self.range}").pack() # Печатаем новый диапазон
# Очищаем все переменные в конце
self.deside = None
self.range = None
self.guessed = []
self.steps = 0
self.main_list = []
self.total_guessed = 0
CTkLabel(master=self.info_box, text='===============================================================').pack()
except ValueError:
self.result_lbl.configure(text='Пожалуйста, введите корректные значения.') # Сообщение об ошибке
finally:
self.start_count_btn['state'] = 'normal' # Включите кнопку обратно
# Настройка приложения
tk = CTk()
tk.geometry('500x500')
set_appearance_mode("dark")
s = Standard(tk)
tk.mainloop()