Вопрос Как запустить Лоадер на пайтоне?

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
код скинь лоадера а ваще какой нахуй лоадер на питоне пиздуй консоль клипай на сишарпе
 
z
код скинь лоадера а ваще какой нахуй лоадер на питоне пиздуй консоль клипай на сишарпе
#GUI лоадер by D3sley


import flet as ft
import threading
import os
import time
import webbrowser
import requests
from zipfile import ZipFile
import subprocess
import json

CLIENT_DIR = "C:\\RolestClient\\RolestClient"
CLIENT_ZIP_URL = "ссылка на файлы клиента"
CLIENT_ZIP_PATH = "C:\\RolestClient\\RolestClient.zip"
CONFIG_PATH = "config.json"

# тут ссылка на фото лого чита
IMAGE_URL = "
Пожалуйста, авторизуйтесь для просмотра ссылки.
"

class MinecraftLauncher:
def __init__(self):
self.page = None
self.THEME_COLOR = "#1a237e"
self.BACKGROUND_COLOR = ft.colors.INDIGO_500
self.RECTANGLE_COLOR = ft.colors.INDIGO_400
self.can_launch = True
self.config = self.load_config()
self.memory_gb = self.config.get("memory_gb", "4")
self.version = "1.16"
self.VERCLIENT = "Rolest Client realise"
self.apply_theme(self.config.get("theme", "blue"))

# Контейнеры интерфейса
self.menu_container = None
self.image_container = None
self.settings_modal = None
self.blur_overlay = None

def load_config(self):
if os.path.exists(CONFIG_PATH):
try:
with open(CONFIG_PATH, "r", encoding="utf-8") as f:
return json.load(f)
except Exception:
pass
return {
"memory_gb": "4",
"theme": "blue" # Дефолтная тема
}

def save_config(self):
try:
with open(CONFIG_PATH, "w", encoding="utf-8") as f:
json.dump(self.config, f, ensure_ascii=False, indent=4)
except Exception as e:
print(f"Ошибка сохранения конфигурации: {e}")

def apply_theme(self, theme_name):
if theme_name == "purple":
self.BACKGROUND_COLOR = ft.colors.DEEP_PURPLE_500
self.RECTANGLE_COLOR = ft.colors.DEEP_PURPLE_400
self.THEME_COLOR = "#673ab7"
else:
self.BACKGROUND_COLOR = ft.colors.INDIGO_500
self.RECTANGLE_COLOR = ft.colors.INDIGO_400
self.THEME_COLOR = "#1a237e"

def main(self, page: ft.Page):
self.page = page
self.page.title = "Rolest Client launcher"
self.page.window_full_screen = False
self.page.padding = 0
self.page.bgcolor = self.BACKGROUND_COLOR
self.page.vertical_alignment = ft.MainAxisAlignment.CENTER
self.page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
self.page.window_resizable = True


self.menu_container = self.create_menu_container()
self.image_container = self.create_image_container()


self.blur_overlay = ft.Container(
expand=True,
bgcolor=ft.colors.TRANSPARENT,
visible=False,
alignment=ft.alignment.center,
content=None,
)

root_row = ft.Row(
controls=[
self.menu_container,
self.image_container,
self.blur_overlay,
],
expand=True,
spacing=20,
alignment=ft.MainAxisAlignment.START,
vertical_alignment=ft.CrossAxisAlignment.STRETCH,
)

self.page.add(root_row)
self.page.update()

def create_menu_container(self):
width=400
margin = 20

container = ft.Container(
width=width,
expand=False,
bgcolor=self.RECTANGLE_COLOR,
border_radius=20,
padding=20,
margin=ft.margin.only(left=margin, top=margin, bottom=margin),
content=self.build_menu_content(),
animate=ft.Animation(400, ft.AnimationCurve.EASE_IN_OUT),
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
)
return container

def build_menu_content(self):
welcome_text = ft.Text("Rolest CLient", size=32, color="white", weight="bold")

self.btn_play = ft.ElevatedButton(
"🎮 Играть",
on_click=self.on_play_click,
width=350,
height=50,
bgcolor=self.THEME_COLOR,
color="white"
)
self.btn_settings = ft.ElevatedButton(
"⚙️ Настройки",
on_click=self.open_settings_modal,
width=350,
height=50,
bgcolor=self.THEME_COLOR,
color="white"
)
btn_exit = ft.ElevatedButton(
"🚪 Выход",
on_click=self.exit_application,
width=350,
height=50,
bgcolor=ft.colors.RED_700,
color="white"
)
btn_telegram = ft.ElevatedButton(
"Перейти в Telegram канал",
on_click=lambda e: webbrowser.open("
Пожалуйста, авторизуйтесь для просмотра ссылки.
"),
width=350,
bgcolor="#0088cc",
color="white"
)

version_info = ft.Text(f"Версия клиента: {self.VERCLIENT}", size=16, color="white", italic=True)

self.status_label = ft.Text("", size=16, color="white")

menu_col = ft.Column(
[
welcome_text,
self.btn_play,
self.btn_settings,
btn_exit,
btn_telegram,
version_info,
self.status_label
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=15,
scroll=ft.ScrollMode.AUTO,
expand=True,
)
return menu_col

def create_image_container(self):
margin = 20
container = ft.Container(
expand=True,
bgcolor=self.RECTANGLE_COLOR,
border_radius=20,
padding=10,
margin=ft.margin.only(right=margin, top=margin, bottom=margin),
content=None,
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
)


image = ft.Image(
src=IMAGE_URL,
fit=ft.ImageFit.CONTAIN,
expand=True,
)
container.content = image
return container

def exit_application(self, e):
ft.app.stop()

def on_play_click(self, e):
if not self.can_launch:
self.status_label.value = "Пожалуйста, подождите 30 секунд перед повторным запуском."
self.page.update()
threading.Thread(target=self.clear_status_after_delay, args=(5,), daemon=True).start()
return

self.can_launch = False
self.status_label.value = "Загрузка клиента: 0%"
self.page.update()

def progress_callback(progress):
self.status_label.value = f"Загрузка клиента: {progress}%"
self.page.update()

def status_callback(status):
self.status_label.value = status
self.page.update()

threading.Thread(target=self.start, args=(progress_callback, status_callback), daemon=True).start()

def start(self, progress_callback, status_callback):
if not os.path.isdir(CLIENT_DIR):
status_callback("Статус: Загрузка и извлечение необходимых файлов...")
self.download_and_extract(CLIENT_ZIP_URL, CLIENT_ZIP_PATH, progress_callback)
status_callback("Статус: клиент успешно загружен.")
else:
status_callback("Статус клиента: загружен.")

try:
memory = int(self.memory_gb)
status_callback("Запуск клиента...")

launch_command = [
"C:\\RolestClient\\RolestClient\\jre-21.0.2\\bin\\java.exe",
f"-Xmx{memory}G",
"-Djava.library.path=C:\\RolestClient\\RolestClient\\natives",
"-cp",
"C:\\RolestClient\\client\\libraries\\*;C:\\RolestClient\\RolestClient\\Rol.jar",
"net.minecraft.client.main.Main",
"--username",
"RolestClient",
"--width",
"854",
"--height",
"480",
"--version",
self.version,
"--gameDir",
"C:\\RolestClient\\game",
"--assetsDir",
"C:\\RolestClient\\RolestClient\\assets",
"--assetIndex",
self.version,
"--accessToken",
"0"
]

self.execute_command(launch_command, status_callback)

except ValueError:
status_callback("Введённое значение не является целым числом. Пожалуйста, попробуйте снова.")
self.can_launch = True
except Exception as e:
status_callback(f"[!] Ошибка: {e}")
self.can_launch = True

def execute_command(self, command_list, status_callback):
try:
status_callback("Клиент запускается...")
threading.Thread(target=self.clear_status_after_delay, args=(11,), daemon=True).start()
status_callback("Клиент запускается...")
process = subprocess.Popen(command_list)
process.wait()
status_callback("Клиент завершил работу.")
threading.Thread(target=self.clear_status_after_delay, args=(2,), daemon=True).start()
except Exception as e:
status_callback(f"Ошибка запуска клиента: {e}")
finally:
threading.Thread(target=self.reset_launch_flag, daemon=True).start()

def reset_launch_flag(self):
time.sleep(30)
self.can_launch = True

def clear_status_after_delay(self, delay):
time.sleep(delay)
self.status_label.value = ""
self.page.update()

def download_and_extract(self, url, dest_path, progress_callback):
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
downloaded = 0
with open(dest_path, 'wb') as file:
for data in response.iter_content(chunk_size=1024):
file.write(data)
downloaded += len(data)
if total_size > 0:
progress = int(downloaded / total_size * 100)
progress_callback(progress)
with ZipFile(dest_path, 'r') as zip_ref:
zip_ref.extractall(CLIENT_DIR)
progress_callback(100)
threading.Thread(target=self.clear_status_after_delay, args=(7,), daemon=True).start()



def open_settings_modal(self, e=None):

self.blur_overlay.visible = True
self.blur_overlay.bgcolor = ft.colors.with_opacity(0.5, ft.colors.BLACK)
self.blur_overlay.update()


self.settings_modal = ft.Container(
width=400,
height=460, # увеличена высота
bgcolor=self.RECTANGLE_COLOR, # Установите цвет фона равным фону меню
border_radius=20,
padding=20,
content=self.build_settings_content(),
alignment=ft.alignment.center,
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
animate=ft.Animation(300, ft.AnimationCurve.EASE_IN_OUT),
)


self.blur_overlay.content = ft.Stack(
controls=[
self.settings_modal
],
alignment=ft.alignment.center
)
self.page.update()

def close_settings_modal(self, e=None):
self.blur_overlay.visible = False
self.blur_overlay.content = None
self.page.update()

def build_settings_content(self):
theme_text = ft.Text("Выбор темы", size=28, color="white", weight="bold")

btn_blue_theme = ft.ElevatedButton(
"Синяя тема",
on_click=self.set_blue_theme,
width=300,
bgcolor=self.get_theme_button_color("blue"),
color="white"
)
btn_purple_theme = ft.ElevatedButton(
"Фиолетовая тема",
on_click=self.set_purple_theme,
width=300,
bgcolor=self.get_theme_button_color("purple"),
color="white"
)

ram_header = ft.Text(
"Выделение RAM",
size=24,
color="white",
weight="bold",
text_align=ft.TextAlign.CENTER,
expand=True,
)
ram_header_container = ft.Container(
content=ram_header,
padding=ft.padding.only(top=20, bottom=5),
alignment=ft.alignment.center,
width=300,
)

self.memory_input = ft.TextField(
label="Выделение оперативной памяти (ГБ)",
value=self.memory_gb,
width=300,
text_align=ft.TextAlign.CENTER,
border_color=self.THEME_COLOR,
color="white",
bgcolor=ft.colors.BLACK12,
autofocus=True,
on_change=self.on_memory_change
)

btn_close = ft.ElevatedButton(
"Закрыть",
on_click=self.close_settings_modal,
width=300,
bgcolor=ft.colors.RED_700,
color="white"
)

settings_col = ft.Column(
[
theme_text,
btn_blue_theme,
btn_purple_theme,
ram_header_container,
self.memory_input,
btn_close,
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=20
)
return settings_col

def get_theme_button_color(self, theme_name):
if theme_name == "purple":
return "#673ab7"
else:
return "#1a237e"

def set_blue_theme(self, e):
self.apply_theme("blue")
self.config["theme"] = "blue"
self.save_config()
self.update_theme()

def set_purple_theme(self, e):
self.apply_theme("purple")
self.config["theme"] = "purple"
self.save_config()
self.update_theme()

def update_theme(self):
self.menu_container.bgcolor = self.RECTANGLE_COLOR
self.image_container.bgcolor = self.RECTANGLE_COLOR
self.btn_play.bgcolor = self.THEME_COLOR
self.btn_settings.bgcolor = self.THEME_COLOR

if self.settings_modal and self.settings_modal.content:
controls = self.settings_modal.content.controls
if len(controls) >= 3:
controls[1].bgcolor = self.get_theme_button_color("blue")
controls[2].bgcolor = self.get_theme_button_color("purple")

if self.settings_modal:
self.settings_modal.bgcolor = self.RECTANGLE_COLOR
self.page.bgcolor = self.BACKGROUND_COLOR
self.page.update()

def on_memory_change(self, e):
self.memory_gb = e.control.value.strip()
self.config["memory_gb"] = self.memory_gb
self.save_config()

if __name__ == "__main__":
launcher = MinecraftLauncher()
ft.app(target=launcher.main, assets_dir=".")
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
z

#GUI лоадер by D3sley


import flet as ft
import threading
import os
import time
import webbrowser
import requests
from zipfile import ZipFile
import subprocess
import json

CLIENT_DIR = "C:\\RolestClient\\RolestClient"
CLIENT_ZIP_URL = "ссылка на файлы клиента"
CLIENT_ZIP_PATH = "C:\\RolestClient\\RolestClient.zip"
CONFIG_PATH = "config.json"

# тут ссылка на фото лого чита
IMAGE_URL = "
Пожалуйста, авторизуйтесь для просмотра ссылки.
"

class MinecraftLauncher:
def __init__(self):
self.page = None
self.THEME_COLOR = "#1a237e"
self.BACKGROUND_COLOR = ft.colors.INDIGO_500
self.RECTANGLE_COLOR = ft.colors.INDIGO_400
self.can_launch = True
self.config = self.load_config()
self.memory_gb = self.config.get("memory_gb", "4")
self.version = "1.16"
self.VERCLIENT = "Rolest Client realise"
self.apply_theme(self.config.get("theme", "blue"))

# Контейнеры интерфейса
self.menu_container = None
self.image_container = None
self.settings_modal = None
self.blur_overlay = None

def load_config(self):
if os.path.exists(CONFIG_PATH):
try:
with open(CONFIG_PATH, "r", encoding="utf-8") as f:
return json.load(f)
except Exception:
pass
return {
"memory_gb": "4",
"theme": "blue" # Дефолтная тема
}

def save_config(self):
try:
with open(CONFIG_PATH, "w", encoding="utf-8") as f:
json.dump(self.config, f, ensure_ascii=False, indent=4)
except Exception as e:
print(f"Ошибка сохранения конфигурации: {e}")

def apply_theme(self, theme_name):
if theme_name == "purple":
self.BACKGROUND_COLOR = ft.colors.DEEP_PURPLE_500
self.RECTANGLE_COLOR = ft.colors.DEEP_PURPLE_400
self.THEME_COLOR = "#673ab7"
else:
self.BACKGROUND_COLOR = ft.colors.INDIGO_500
self.RECTANGLE_COLOR = ft.colors.INDIGO_400
self.THEME_COLOR = "#1a237e"

def main(self, page: ft.Page):
self.page = page
self.page.title = "Rolest Client launcher"
self.page.window_full_screen = False
self.page.padding = 0
self.page.bgcolor = self.BACKGROUND_COLOR
self.page.vertical_alignment = ft.MainAxisAlignment.CENTER
self.page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
self.page.window_resizable = True


self.menu_container = self.create_menu_container()
self.image_container = self.create_image_container()


self.blur_overlay = ft.Container(
expand=True,
bgcolor=ft.colors.TRANSPARENT,
visible=False,
alignment=ft.alignment.center,
content=None,
)

root_row = ft.Row(
controls=[
self.menu_container,
self.image_container,
self.blur_overlay,
],
expand=True,
spacing=20,
alignment=ft.MainAxisAlignment.START,
vertical_alignment=ft.CrossAxisAlignment.STRETCH,
)

self.page.add(root_row)
self.page.update()

def create_menu_container(self):
width=400
margin = 20

container = ft.Container(
width=width,
expand=False,
bgcolor=self.RECTANGLE_COLOR,
border_radius=20,
padding=20,
margin=ft.margin.only(left=margin, top=margin, bottom=margin),
content=self.build_menu_content(),
animate=ft.Animation(400, ft.AnimationCurve.EASE_IN_OUT),
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
)
return container

def build_menu_content(self):
welcome_text = ft.Text("Rolest CLient", size=32, color="white", weight="bold")

self.btn_play = ft.ElevatedButton(
"🎮 Играть",
on_click=self.on_play_click,
width=350,
height=50,
bgcolor=self.THEME_COLOR,
color="white"
)
self.btn_settings = ft.ElevatedButton(
"⚙ Настройки",
on_click=self.open_settings_modal,
width=350,
height=50,
bgcolor=self.THEME_COLOR,
color="white"
)
btn_exit = ft.ElevatedButton(
"🚪 Выход",
on_click=self.exit_application,
width=350,
height=50,
bgcolor=ft.colors.RED_700,
color="white"
)
btn_telegram = ft.ElevatedButton(
"Перейти в Telegram канал",
on_click=lambda e: webbrowser.open("
Пожалуйста, авторизуйтесь для просмотра ссылки.
"),
width=350,
bgcolor="#0088cc",
color="white"
)

version_info = ft.Text(f"Версия клиента: {self.VERCLIENT}", size=16, color="white", italic=True)

self.status_label = ft.Text("", size=16, color="white")

menu_col = ft.Column(
[
welcome_text,
self.btn_play,
self.btn_settings,
btn_exit,
btn_telegram,
version_info,
self.status_label
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=15,
scroll=ft.ScrollMode.AUTO,
expand=True,
)
return menu_col

def create_image_container(self):
margin = 20
container = ft.Container(
expand=True,
bgcolor=self.RECTANGLE_COLOR,
border_radius=20,
padding=10,
margin=ft.margin.only(right=margin, top=margin, bottom=margin),
content=None,
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
)


image = ft.Image(
src=IMAGE_URL,
fit=ft.ImageFit.CONTAIN,
expand=True,
)
container.content = image
return container

def exit_application(self, e):
ft.app.stop()

def on_play_click(self, e):
if not self.can_launch:
self.status_label.value = "Пожалуйста, подождите 30 секунд перед повторным запуском."
self.page.update()
threading.Thread(target=self.clear_status_after_delay, args=(5,), daemon=True).start()
return

self.can_launch = False
self.status_label.value = "Загрузка клиента: 0%"
self.page.update()

def progress_callback(progress):
self.status_label.value = f"Загрузка клиента: {progress}%"
self.page.update()

def status_callback(status):
self.status_label.value = status
self.page.update()

threading.Thread(target=self.start, args=(progress_callback, status_callback), daemon=True).start()

def start(self, progress_callback, status_callback):
if not os.path.isdir(CLIENT_DIR):
status_callback("Статус: Загрузка и извлечение необходимых файлов...")
self.download_and_extract(CLIENT_ZIP_URL, CLIENT_ZIP_PATH, progress_callback)
status_callback("Статус: клиент успешно загружен.")
else:
status_callback("Статус клиента: загружен.")

try:
memory = int(self.memory_gb)
status_callback("Запуск клиента...")

launch_command = [
"C:\\RolestClient\\RolestClient\\jre-21.0.2\\bin\\java.exe",
f"-Xmx{memory}G",
"-Djava.library.path=C:\\RolestClient\\RolestClient\\natives",
"-cp",
"C:\\RolestClient\\client\\libraries\\*;C:\\RolestClient\\RolestClient\\Rol.jar",
"net.minecraft.client.main.Main",
"--username",
"RolestClient",
"--width",
"854",
"--height",
"480",
"--version",
self.version,
"--gameDir",
"C:\\RolestClient\\game",
"--assetsDir",
"C:\\RolestClient\\RolestClient\\assets",
"--assetIndex",
self.version,
"--accessToken",
"0"
]

self.execute_command(launch_command, status_callback)

except ValueError:
status_callback("Введённое значение не является целым числом. Пожалуйста, попробуйте снова.")
self.can_launch = True
except Exception as e:
status_callback(f"[!] Ошибка: {e}")
self.can_launch = True

def execute_command(self, command_list, status_callback):
try:
status_callback("Клиент запускается...")
threading.Thread(target=self.clear_status_after_delay, args=(11,), daemon=True).start()
status_callback("Клиент запускается...")
process = subprocess.Popen(command_list)
process.wait()
status_callback("Клиент завершил работу.")
threading.Thread(target=self.clear_status_after_delay, args=(2,), daemon=True).start()
except Exception as e:
status_callback(f"Ошибка запуска клиента: {e}")
finally:
threading.Thread(target=self.reset_launch_flag, daemon=True).start()

def reset_launch_flag(self):
time.sleep(30)
self.can_launch = True

def clear_status_after_delay(self, delay):
time.sleep(delay)
self.status_label.value = ""
self.page.update()

def download_and_extract(self, url, dest_path, progress_callback):
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
downloaded = 0
with open(dest_path, 'wb') as file:
for data in response.iter_content(chunk_size=1024):
file.write(data)
downloaded += len(data)
if total_size > 0:
progress = int(downloaded / total_size * 100)
progress_callback(progress)
with ZipFile(dest_path, 'r') as zip_ref:
zip_ref.extractall(CLIENT_DIR)
progress_callback(100)
threading.Thread(target=self.clear_status_after_delay, args=(7,), daemon=True).start()



def open_settings_modal(self, e=None):

self.blur_overlay.visible = True
self.blur_overlay.bgcolor = ft.colors.with_opacity(0.5, ft.colors.BLACK)
self.blur_overlay.update()


self.settings_modal = ft.Container(
width=400,
height=460, # увеличена высота
bgcolor=self.RECTANGLE_COLOR, # Установите цвет фона равным фону меню
border_radius=20,
padding=20,
content=self.build_settings_content(),
alignment=ft.alignment.center,
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
animate=ft.Animation(300, ft.AnimationCurve.EASE_IN_OUT),
)


self.blur_overlay.content = ft.Stack(
controls=[
self.settings_modal
],
alignment=ft.alignment.center
)
self.page.update()

def close_settings_modal(self, e=None):
self.blur_overlay.visible = False
self.blur_overlay.content = None
self.page.update()

def build_settings_content(self):
theme_text = ft.Text("Выбор темы", size=28, color="white", weight="bold")

btn_blue_theme = ft.ElevatedButton(
"Синяя тема",
on_click=self.set_blue_theme,
width=300,
bgcolor=self.get_theme_button_color("blue"),
color="white"
)
btn_purple_theme = ft.ElevatedButton(
"Фиолетовая тема",
on_click=self.set_purple_theme,
width=300,
bgcolor=self.get_theme_button_color("purple"),
color="white"
)

ram_header = ft.Text(
"Выделение RAM",
size=24,
color="white",
weight="bold",
text_align=ft.TextAlign.CENTER,
expand=True,
)
ram_header_container = ft.Container(
content=ram_header,
padding=ft.padding.only(top=20, bottom=5),
alignment=ft.alignment.center,
width=300,
)

self.memory_input = ft.TextField(
label="Выделение оперативной памяти (ГБ)",
value=self.memory_gb,
width=300,
text_align=ft.TextAlign.CENTER,
border_color=self.THEME_COLOR,
color="white",
bgcolor=ft.colors.BLACK12,
autofocus=True,
on_change=self.on_memory_change
)

btn_close = ft.ElevatedButton(
"Закрыть",
on_click=self.close_settings_modal,
width=300,
bgcolor=ft.colors.RED_700,
color="white"
)

settings_col = ft.Column(
[
theme_text,
btn_blue_theme,
btn_purple_theme,
ram_header_container,
self.memory_input,
btn_close,
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=20
)
return settings_col

def get_theme_button_color(self, theme_name):
if theme_name == "purple":
return "#673ab7"
else:
return "#1a237e"

def set_blue_theme(self, e):
self.apply_theme("blue")
self.config["theme"] = "blue"
self.save_config()
self.update_theme()

def set_purple_theme(self, e):
self.apply_theme("purple")
self.config["theme"] = "purple"
self.save_config()
self.update_theme()

def update_theme(self):
self.menu_container.bgcolor = self.RECTANGLE_COLOR
self.image_container.bgcolor = self.RECTANGLE_COLOR
self.btn_play.bgcolor = self.THEME_COLOR
self.btn_settings.bgcolor = self.THEME_COLOR

if self.settings_modal and self.settings_modal.content:
controls = self.settings_modal.content.controls
if len(controls) >= 3:
controls[1].bgcolor = self.get_theme_button_color("blue")
controls[2].bgcolor = self.get_theme_button_color("purple")

if self.settings_modal:
self.settings_modal.bgcolor = self.RECTANGLE_COLOR
self.page.bgcolor = self.BACKGROUND_COLOR
self.page.update()

def on_memory_change(self, e):
self.memory_gb = e.control.value.strip()
self.config["memory_gb"] = self.memory_gb
self.save_config()

if __name__ == "__main__":
launcher = MinecraftLauncher()
ft.app(target=launcher.main, assets_dir=".")
pip install requests
 
1749858933364.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу