-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshared.py
More file actions
83 lines (67 loc) · 2.23 KB
/
shared.py
File metadata and controls
83 lines (67 loc) · 2.23 KB
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
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np
# Aktif dil metinleri burada tutulur
TEXTS = {}
def set_language(texts: dict):
global TEXTS
TEXTS = texts
def txt(key, **kwargs):
"""
txt("roof_height", value=3.45)
txt("welcome", name="Ahmet")
"""
# Çeviri yoksa anahtarı köşeli parantezle göster (debug için çok faydalı)
text = TEXTS.get(key, f"[{key}]")
if kwargs:
try:
return text.format(**kwargs)
except KeyError:
# Eksik parametre varsa, ham metni döndür
return text
return text
def calculate_roof_side_height(roof_base, roof_height):
"""
Çatının sağ ve sol kenarlarının yüksekliklerini hesaplar.
:param roof_base: Çatının taban uzunluğu
:param roof_height: Çatının yüksekliği
:return: sağ ve sol kenarın yükseklikleri
"""
side_length = np.sqrt((roof_base / 2) ** 2 + roof_height ** 2)
return side_length
class ToolTip:
def __init__(self, widget, text, wraplength=250):
self.widget = widget
self.text = text
self.wraplength = wraplength
self.tooltip = None
# Event bağlama
self.widget.bind("<Enter>", self.show_tooltip)
self.widget.bind("<Leave>", self.hide_tooltip)
def show_tooltip(self, event):
# Tooltip zaten varsa, bir tane daha oluşturmayalım
if self.tooltip:
return
# Tooltip'i göstermek için bir pencere oluştur
self.tooltip = tk.Toplevel(self.widget)
self.tooltip.wm_overrideredirect(True) # Pencere çerçevesini gizle
self.tooltip.wm_geometry(f"+{event.x_root + 10}+{event.y_root + 10}")
# Tooltip içeriğini yazdır
label = tk.Label(
self.tooltip,
text=self.text,
background="lightyellow",
relief="solid",
borderwidth=1,
wraplength=self.wraplength,
justify="left",
padx=5,
pady=5
)
label.pack()
def hide_tooltip(self, event):
if self.tooltip:
self.tooltip.destroy()
self.tooltip = None