import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
import requests
from io import BytesIO
import gettext
TICKS_PER_SECOND = 20
def seconds_to_ticks(seconds):
return seconds * TICKS_PER_SECOND
def ticks_to_seconds(ticks):
return ticks / TICKS_PER_SECOND
def convert():
if entry.get() in placeholders.values() or entry.get() == "":
result_label.config(text=f"Введите значение в поле '{placeholders[conversion_mode.get()]}'")
else:
try:
input_value = float(entry.get())
if conversion_mode.get() == "Секунды в Тики":
result = seconds_to_ticks(input_value)
else:
result = ticks_to_seconds(input_value)
result_label.config(text=f"Результат: {result}")
except ValueError:
result_label.config(text="Некорректное число")
def clear_placeholder(event):
if entry.get() in placeholders.values():
entry.delete(0, tk.END)
entry.config(foreground="black")
def restore_placeholder(event):
if entry.get() == "":
entry.insert(0, placeholders[conversion_mode.get()])
entry.config(foreground="gray")
def update_placeholder(*args):
entry.delete(0, tk.END)
entry.insert(0, placeholders[conversion_mode.get()])
entry.config(foreground="gray")
result_label.config(text="Результат:")
def handle_enter(event):
convert()
root = tk.Tk()
root.title("Конвертер секунд в тики")
root.geometry("1000x700")
root.update_idletasks()
width = root.winfo_width()
height = root.winfo_height()
x = (root.winfo_screenwidth() // 2) - (width // 2)
y = (root.winfo_screenheight() // 2) - (height // 2)
root.geometry('{}x{}+{}+{}'.format(width, height, x, y))
url = "https://wallbox.ru/resize/1920x1200/wallpapers/main/201431/aadf9426876139a.jpg"
response = requests.get(url)
bg_image = Image.open(BytesIO(response.content))
bg_image = bg_image.resize((width, height), Image.LANCZOS)
bg_photo = ImageTk.PhotoImage(bg_image)
canvas = tk.Canvas(root, width=width, height=height)
canvas.pack(fill="both", expand=True)
canvas.create_image(0, 0, image=bg_photo, anchor="nw")
lang = "ru"
trans = gettext.translation('strings', localedir='./locale', languages=[lang], fallback=True)
trans.install()
style = ttk.Style()
style.configure("TEntry", background="white", fieldbackground="white", borderwidth=0, relief="flat")
style.configure("TLabel", background="white", font=("Times New Roman", 20), borderwidth=0, relief="flat")
style.configure("TRadiobutton", background="white", font=("Times New Roman", 20), borderwidth=0, relief="flat")
style.configure("TButton", background="white", font=("Times New Roman", 20), borderwidth=0, relief="flat")
placeholders = {
"Секунды в Тики": "Введите секунды",
"Тики в Секунды": "Введите тики"
}
conversion_mode = tk.StringVar(value="Секунды в Тики")
conversion_mode.trace_add("write", update_placeholder)
entry = ttk.Entry(canvas, font=("Times New Roman", 20), style="TEntry", foreground="gray")
entry.insert(0, placeholders[conversion_mode.get()])
entry.bind("<FocusIn>", clear_placeholder)
entry.bind("<FocusOut>", restore_placeholder)
entry.bind("<Return>", handle_enter)
entry_window = canvas.create_window(width//2, height//2 - 60, window=entry, anchor="center")
radiobutton1 = ttk.Radiobutton(canvas, text="Секунды в Тики", variable=conversion_mode, value="Секунды в Тики", style="TRadiobutton")
radiobutton2 = ttk.Radiobutton(canvas, text="Тики в Секунды", variable=conversion_mode, value="Тики в Секунды", style="TRadiobutton")
radiobutton1_window = canvas.create_window(width//2, height//2 - 20, window=radiobutton1, anchor="center")
radiobutton2_window = canvas.create_window(width//2, height//2 + 20, window=radiobutton2, anchor="center")
convert_button = ttk.Button(canvas, text="Конвертировать", style="TButton", command=convert, width=20)
convert_button_window = canvas.create_window(width//2, height//2 + 60, window=convert_button, anchor="center")
result_label = ttk.Label(canvas, text="Результат: ", style="TLabel")
result_label_window = canvas.create_window(width//2, height//2 + 100, window=result_label, anchor="center")
root.mainloop()