Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.06.2024
Сообщений: 1

GPT DataBase, Sqlite3, а именно время Label, не изменяется

15.06.2024, 11:14. Показов 611. Ответов 1

Студворк — интернет-сервис помощи студентам
Я попросил ChatGPT сделать скрипт для фарма бананов в игре Banana. Там есть функции время сколько осталось до бананов и обновление время. Я попросил добавить DataBase для того чтобы время хранилось в ней и было всё корректно. Он начал использовать Sqlite3 и после этого изменения Label время в TKinter перестало изменяться, просто было заморожено. Кто сможет решить данную проблему. Напишите письмо или как тут? Я первый раз на форуме здесь сижу.

Вот данный скрипт:

-----------------------------------------------------------------------------------------------------------------------------------------------------

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
import tkinter as tk
from tkinter import filedialog
import time
import threading
import subprocess
import os
import pyautogui
import pygetwindow as gw
import pystray
from PIL import Image
import sqlite3
 
# Глобальные переменные для хранения пути к игре и состояния игры
game_path = ""
game_running = False
exit_requested = False  # Флаг для запроса выхода из приложения
 
# Стандартные пути для поиска игры
default_paths = [
    "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Banana",
    "C:\\Program Files\\Steam\\steamapps\\common\\Banana",
    "D:\\Steam\\steamapps\\common\\Banana"
]
 
# Создание базы данных и таблицы для времени таймеров
def create_timer_table():
    conn = sqlite3.connect('timers.db')
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS timers
                 (name TEXT PRIMARY KEY, duration INTEGER)''')
    conn.commit()
    conn.close()
 
# Загрузка таймеров из базы данных
def load_timers():
    conn = sqlite3.connect('timers.db')
    c = conn.cursor()
    c.execute('SELECT * FROM timers')
    timers = c.fetchall()
    conn.close()
    return timers
 
# Сохранение таймера в базе данных
def save_timer(name, duration):
    conn = sqlite3.connect('timers.db')
    c = conn.cursor()
    c.execute('REPLACE INTO timers (name, duration) VALUES (?, ?)', (name, duration))
    conn.commit()
    conn.close()
 
# Функция для автоматического поиска пути к игре
def find_game_path():
    global game_path
    for path in default_paths:
        if os.path.exists(os.path.join(path, "Banana.exe")):
            game_path = os.path.join(path, "Banana.exe")
            break
    if not game_path:
        game_path_label.config(text="Banana: Undetected", fg="red")
    else:
        game_path_label.config(text="Banana: Detected", fg="green")
 
# Функция для выбора пути к игре вручную
def browse_game():
    global game_path
    game_path = filedialog.askopenfilename(title="Выберите игру Banana", filetypes=[("Исполняемые файлы", "*.exe")])
    if game_path:
        game_path_label.config(text="Banana: Detected", fg="green")
    else:
        game_path_label.config(text="Banana: Undetected", fg="red")
 
# Функция для поиска банана на экране и клика по нему
def click_on_banana():
    screen_width, screen_height = pyautogui.size()
    center_x = screen_width // 2
    center_y = screen_height // 2
 
    while True:
        pyautogui.click(center_x, center_y)
        time.sleep(0.5)
 
# Функция для запуска игры и автоматических нажатий
def launch_game():
    global game_path, game_running, exit_requested
    if not exit_requested and not game_running and os.path.exists(game_path):
        game_running = True
        game_process = subprocess.Popen([game_path])
        print("Игра запущена")
        time.sleep(10)  # Ждем 10 секунд для загрузки игры
 
        # Поиск окна игры
        game_window = None
        while game_window is None:
            try:
                game_window = gw.getWindowsWithTitle('Banana')[0]
            except IndexError:
                time.sleep(1)
 
        game_window.activate()
 
        # Запускаем кликер по банану в отдельном потоке
        click_thread = threading.Thread(target=click_on_banana)
        click_thread.start()
    else:
        print("Игра не найдена по указанному пути или уже запущена")
 
# Функция для обратного отсчета
def countdown_timer(label, duration, timer_name):
    def update_timer():
        nonlocal duration
        hours = duration // 3600
        minutes = (duration % 3600) // 60
        seconds = duration % 60
        label.config(text=f"{hours:02}:{minutes:02}:{seconds:02}")
        if duration > 0:
            duration -= 1
            label.after(1000, update_timer)
            # Сохраняем текущее время таймера в базу данных
            save_timer(timer_name, duration)
        else:
            duration = 3600 if timer_name == "ordinary" else 17 * 3600  # Обычные бананы через 1 час, редкие через 17 часов
            label.after(1000, update_timer)
            # Сохраняем текущее время таймера в базу данных
            save_timer(timer_name, duration)
 
    update_timer()
 
# Функция для запуска фоновых задач
def start_background_tasks():
    # Запускаем игру в фоновом режиме
    game_thread = threading.Thread(target=launch_game)
    game_thread.start()
 
# Создание интерфейса
def create_interface():
    global game_path_label, ordinary_timer_label, rare_timer_label
 
    # Создаем основное окно
    root = tk.Tk()
    root.title("BananaFarm")
    root.geometry("450x450")
    root.configure(bg="black")
    root.resizable(False, False)  # Запрещаем изменение размера окна
 
    # Заголовок
    title = tk.Label(root, text="BananaFarm", fg="yellow", bg="black", font=("Helvetica", 30, "bold"))
    title.pack(pady=10)
 
    # Кнопка для выбора пути к игре
    browse_button = tk.Button(root, text="Обзор", command=browse_game, bg="grey", fg="white",
                              font=("Helvetica", 12, "bold"))
    browse_button.pack(pady=10)
 
    # Метка для отображения пути к игре
    game_path_label = tk.Label(root, text="Banana: Undetected", fg="red", bg="black", font=("Helvetica", 10))
    game_path_label.pack(pady=10)
 
    # Добавляем метки для таймеров
    ordinary_label = tk.Label(root, text="Обычные бананы появятся через:", fg="white", bg="black",
                              font=("Helvetica", 14))
    ordinary_label.pack(pady=10)
    ordinary_timer_label = tk.Label(root, text="01:00:00", fg="yellow", bg="black", font=("Helvetica", 24, "bold"))
    ordinary_timer_label.pack(pady=10)
 
    rare_label = tk.Label(root, text="Редкие бананы появятся через:", fg="white", bg="black", font=("Helvetica", 14))
    rare_label.pack(pady=10)
    rare_timer_label = tk.Label(root, text="17:00:00", fg="yellow", bg="black", font=("Helvetica", 24, "bold"))
    rare_timer_label.pack(pady=10)
 
    # Загружаем таймеры из базы данных и запускаем обратный отсчет
    timers = load_timers()
    for timer in timers:
        if timer[0] == "ordinary":
            countdown_timer(ordinary_timer_label, timer[1], "ordinary")
        elif timer[0] == "rare":
            countdown_timer(rare_timer_label, timer[1], "rare")
 
    # Попытка найти игру автоматически
    find_game_path()
 
    # Запускаем интерфейс
    root.mainloop()
 
# Функция для остановки иконки в трее
def on_clicked(icon, item):
    global exit_requested
    exit_requested = True  # Устанавливаем флаг запроса выхода
    icon.stop()
 
if __name__ == "__main__":
    # Создаем базу данных и таблицу для хранения времени таймеров
    create_timer_table()
 
    # Создаем иконку в системном трее
    image_path = "C:\\Games\\BananaScript\\BananIcon\\Icon.png"
    image = Image.open(image_path)
    menu = pystray.Menu(pystray.MenuItem('Выход', on_clicked))
    icon = pystray.Icon("BananaFarm", image, "BananaFarm", menu)
 
    # Запуск интерфейса в отдельном потоке
    interface_thread = threading.Thread(target=create_interface)
    interface_thread.start()
 
    # Запуск иконки в системном трее
    icon.run()
 
    # Запуск фоновых задач
    start_background_tasks()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2024, 11:14
Ответы с готовыми решениями:

Sqlite3 unable to open database file
Добрый день. Пытаюсь создать сервис по этому уроку. При выполнении операции rake -T (середина туториала) у меня появляется ошибка sqlite3...

help, python, sqlite3, database, база данных, выборка
Всем привет, я в питоне новичок, да и программированием не занимаюсь. Но задали нам домашку. Экспертную систему сочинить, соответственно с...

Не изменяется текст в label
Есть форма, а на ней label. При событии mouse_down на одном их элементов формы я вызываю собственную функцию (рекурсивную). То есть...

1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.06.2024, 15:08
Цитата Сообщение от RimijionShow Посмотреть сообщение
Кто сможет решить данную проблему
ChatGPT
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.06.2024, 15:08
Помогаю со студенческими работами здесь

Не изменяется цвет текста Label
В общем, ситуация такая: с помощью метода paint, на форме ПО ТАЙМЕРУ прорисовываются разные картинки (с помощью Me.Refresh() в таймере)....

SQLite DataBase - почему подчеркивает DataBase db: пишет (DataBase cannot be resolved to a type)
Здравствуйте! помогите понять почему подчеркивает DataBase db; пишет (DataBase cannot be resolved to a type), чем это можно исправить ...

Ошибка установки с флешки GPT на GPT (или MBR) диск
Здравствуйте. У меня ноутбук HP с предустановленным разделом восстановления, но Recovery (F11) почему-то не работает, это отдельная тема...

В промежутке между GPT-6 и GPT-8 произойдёт качественный переход
Глава 360 Security Technology заявил, что в промежутке между GPT-6 и GPT-8 у языковых моделей может появиться сознание В то время,...

Время документа изменяется при проведении
В ТиС 9.43 то и дело проявляется эффект помещения при проведении различных документов в конец дня, если они ранее не были проведены....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru