turkterm 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- turkterm-0.1.0/LICENSE +21 -0
- turkterm-0.1.0/PKG-INFO +83 -0
- turkterm-0.1.0/README.md +60 -0
- turkterm-0.1.0/pyproject.toml +32 -0
- turkterm-0.1.0/setup.cfg +4 -0
- turkterm-0.1.0/setup.py +22 -0
- turkterm-0.1.0/turkterm/__init__.py +220 -0
- turkterm-0.1.0/turkterm.egg-info/PKG-INFO +83 -0
- turkterm-0.1.0/turkterm.egg-info/SOURCES.txt +9 -0
- turkterm-0.1.0/turkterm.egg-info/dependency_links.txt +1 -0
- turkterm-0.1.0/turkterm.egg-info/top_level.txt +1 -0
turkterm-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Senin Adın
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
turkterm-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: turkterm
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Türkçe destekli renkli terminal kütüphanesi - spinner, progress bar, menü, tablo ve daha fazlası
|
|
5
|
+
Author: Sen
|
|
6
|
+
Author-email: Senin Adın <senin_mailin@example.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/kullanici-adin/turkterm
|
|
9
|
+
Project-URL: Repository, https://github.com/kullanici-adin/turkterm
|
|
10
|
+
Keywords: terminal,türkçe,renkli,cli,progress-bar,spinner,turkish
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Natural Language :: Turkish
|
|
15
|
+
Classifier: Topic :: Terminals
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
17
|
+
Requires-Python: >=3.6
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Dynamic: author
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
Dynamic: requires-python
|
|
23
|
+
|
|
24
|
+
# turkterm 🇹🇷
|
|
25
|
+
|
|
26
|
+
Türkçe destekli, renkli ve eğlenceli terminal kütüphanesi. Termux ve Pydroid3 ile tam uyumlu.
|
|
27
|
+
|
|
28
|
+
## Kurulum
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install turkterm
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Özellikler
|
|
35
|
+
|
|
36
|
+
- 🎨 Renkli yazı yazdırma
|
|
37
|
+
- 🔄 Spinner (yükleme animasyonu)
|
|
38
|
+
- 📊 Progress bar (ilerleme çubuğu)
|
|
39
|
+
- 📦 Kutu içinde yazı
|
|
40
|
+
- 📋 Tablo gösterme
|
|
41
|
+
- 📜 İnteraktif menü
|
|
42
|
+
- 🇹🇷 Türkçe karakter düzeltici
|
|
43
|
+
- ✓ Bilgi/Hata/Başarı mesajları
|
|
44
|
+
|
|
45
|
+
## Hızlı Başlangıç
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
import turkterm as tt
|
|
49
|
+
|
|
50
|
+
# Renkli yazı
|
|
51
|
+
tt.yaz("Merhaba Dünya!", renk="yesil", kalin=True)
|
|
52
|
+
|
|
53
|
+
# Mesajlar
|
|
54
|
+
tt.basari("İşlem tamamlandı!")
|
|
55
|
+
tt.hata("Bir şeyler yanlış gitti")
|
|
56
|
+
tt.uyari("Dikkatli ol!")
|
|
57
|
+
tt.bilgi("Bilgilendirme mesajı")
|
|
58
|
+
|
|
59
|
+
# Kutu
|
|
60
|
+
tt.kutu("Bu yazı çerçeve içinde", renk="mavi")
|
|
61
|
+
|
|
62
|
+
# Tablo
|
|
63
|
+
tt.tablo(
|
|
64
|
+
["İsim", "Yaş", "Şehir"],
|
|
65
|
+
[["Ali", 25, "İstanbul"], ["Ayşe", 30, "İzmir"]]
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
# Menü
|
|
69
|
+
secim = tt.menu("Ne yapmak istersin?", ["Başla", "Ayarlar", "Çıkış"])
|
|
70
|
+
|
|
71
|
+
# Progress bar
|
|
72
|
+
import time
|
|
73
|
+
for i in range(101):
|
|
74
|
+
tt.ilerleme(i, 100, "İndiriliyor")
|
|
75
|
+
time.sleep(0.02)
|
|
76
|
+
|
|
77
|
+
# Spinner
|
|
78
|
+
with tt.Spinner("Veriler yükleniyor..."):
|
|
79
|
+
time.sleep(3)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Lisans
|
|
83
|
+
MIT
|
turkterm-0.1.0/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# turkterm 🇹🇷
|
|
2
|
+
|
|
3
|
+
Türkçe destekli, renkli ve eğlenceli terminal kütüphanesi. Termux ve Pydroid3 ile tam uyumlu.
|
|
4
|
+
|
|
5
|
+
## Kurulum
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install turkterm
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Özellikler
|
|
12
|
+
|
|
13
|
+
- 🎨 Renkli yazı yazdırma
|
|
14
|
+
- 🔄 Spinner (yükleme animasyonu)
|
|
15
|
+
- 📊 Progress bar (ilerleme çubuğu)
|
|
16
|
+
- 📦 Kutu içinde yazı
|
|
17
|
+
- 📋 Tablo gösterme
|
|
18
|
+
- 📜 İnteraktif menü
|
|
19
|
+
- 🇹🇷 Türkçe karakter düzeltici
|
|
20
|
+
- ✓ Bilgi/Hata/Başarı mesajları
|
|
21
|
+
|
|
22
|
+
## Hızlı Başlangıç
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
import turkterm as tt
|
|
26
|
+
|
|
27
|
+
# Renkli yazı
|
|
28
|
+
tt.yaz("Merhaba Dünya!", renk="yesil", kalin=True)
|
|
29
|
+
|
|
30
|
+
# Mesajlar
|
|
31
|
+
tt.basari("İşlem tamamlandı!")
|
|
32
|
+
tt.hata("Bir şeyler yanlış gitti")
|
|
33
|
+
tt.uyari("Dikkatli ol!")
|
|
34
|
+
tt.bilgi("Bilgilendirme mesajı")
|
|
35
|
+
|
|
36
|
+
# Kutu
|
|
37
|
+
tt.kutu("Bu yazı çerçeve içinde", renk="mavi")
|
|
38
|
+
|
|
39
|
+
# Tablo
|
|
40
|
+
tt.tablo(
|
|
41
|
+
["İsim", "Yaş", "Şehir"],
|
|
42
|
+
[["Ali", 25, "İstanbul"], ["Ayşe", 30, "İzmir"]]
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Menü
|
|
46
|
+
secim = tt.menu("Ne yapmak istersin?", ["Başla", "Ayarlar", "Çıkış"])
|
|
47
|
+
|
|
48
|
+
# Progress bar
|
|
49
|
+
import time
|
|
50
|
+
for i in range(101):
|
|
51
|
+
tt.ilerleme(i, 100, "İndiriliyor")
|
|
52
|
+
time.sleep(0.02)
|
|
53
|
+
|
|
54
|
+
# Spinner
|
|
55
|
+
with tt.Spinner("Veriler yükleniyor..."):
|
|
56
|
+
time.sleep(3)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Lisans
|
|
60
|
+
MIT
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "turkterm"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Türkçe destekli renkli terminal kütüphanesi - spinner, progress bar, menü, tablo ve daha fazlası"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.6"
|
|
11
|
+
license = {text = "MIT"}
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Senin Adın", email = "senin_mailin@example.com"}
|
|
14
|
+
]
|
|
15
|
+
keywords = ["terminal", "türkçe", "renkli", "cli", "progress-bar", "spinner", "turkish"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Natural Language :: Turkish",
|
|
21
|
+
"Topic :: Terminals",
|
|
22
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
23
|
+
]
|
|
24
|
+
dependencies = []
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "https://github.com/kullanici-adin/turkterm"
|
|
28
|
+
Repository = "https://github.com/kullanici-adin/turkterm"
|
|
29
|
+
|
|
30
|
+
[tool.setuptools.packages.find]
|
|
31
|
+
where = ["."]
|
|
32
|
+
include = ["turkterm*"]
|
turkterm-0.1.0/setup.cfg
ADDED
turkterm-0.1.0/setup.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from setuptools import setup, find_packages
|
|
2
|
+
|
|
3
|
+
with open("README.md", "r", encoding="utf-8") as f:
|
|
4
|
+
uzun_aciklama = f.read()
|
|
5
|
+
|
|
6
|
+
setup(
|
|
7
|
+
name="turkterm",
|
|
8
|
+
version="0.1.0",
|
|
9
|
+
author="Sen",
|
|
10
|
+
description="Türkçe destekli renkli terminal kütüphanesi - spinner, progress bar, menü, tablo ve daha fazlası",
|
|
11
|
+
long_description=uzun_aciklama,
|
|
12
|
+
long_description_content_type="text/markdown",
|
|
13
|
+
packages=find_packages(),
|
|
14
|
+
classifiers=[
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"License :: OSI Approved :: MIT License",
|
|
17
|
+
"Operating System :: OS Independent",
|
|
18
|
+
"Natural Language :: Turkish",
|
|
19
|
+
],
|
|
20
|
+
python_requires=">=3.6",
|
|
21
|
+
install_requires=[], # Hiç dış bağımlılık yok!
|
|
22
|
+
)
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"""
|
|
2
|
+
turkterm - Türkçe destekli renkli terminal kütüphanesi
|
|
3
|
+
Kullanım: pip install turkterm
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import sys
|
|
7
|
+
import time
|
|
8
|
+
import threading
|
|
9
|
+
import shutil
|
|
10
|
+
|
|
11
|
+
__version__ = "0.1.0"
|
|
12
|
+
__author__ = "Sen"
|
|
13
|
+
|
|
14
|
+
# ============ RENKLER ============
|
|
15
|
+
class Renk:
|
|
16
|
+
SIYAH = "\033[30m"
|
|
17
|
+
KIRMIZI = "\033[31m"
|
|
18
|
+
YESIL = "\033[32m"
|
|
19
|
+
SARI = "\033[33m"
|
|
20
|
+
MAVI = "\033[34m"
|
|
21
|
+
MOR = "\033[35m"
|
|
22
|
+
CAMGOBEGI = "\033[36m"
|
|
23
|
+
BEYAZ = "\033[37m"
|
|
24
|
+
|
|
25
|
+
# Parlak
|
|
26
|
+
P_KIRMIZI = "\033[91m"
|
|
27
|
+
P_YESIL = "\033[92m"
|
|
28
|
+
P_SARI = "\033[93m"
|
|
29
|
+
P_MAVI = "\033[94m"
|
|
30
|
+
P_MOR = "\033[95m"
|
|
31
|
+
P_CAMGOBEGI = "\033[96m"
|
|
32
|
+
|
|
33
|
+
# Stiller
|
|
34
|
+
KALIN = "\033[1m"
|
|
35
|
+
ITALIK = "\033[3m"
|
|
36
|
+
ALTI_CIZILI = "\033[4m"
|
|
37
|
+
SIFIRLA = "\033[0m"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def yaz(metin, renk=None, kalin=False, sonu=""):
|
|
41
|
+
"""Renkli yazı yazdır. Örnek: yaz('Merhaba', 'kirmizi', kalin=True)"""
|
|
42
|
+
renkler = {
|
|
43
|
+
"siyah": Renk.SIYAH, "kirmizi": Renk.KIRMIZI, "yesil": Renk.YESIL,
|
|
44
|
+
"sari": Renk.SARI, "mavi": Renk.MAVI, "mor": Renk.MOR,
|
|
45
|
+
"camgobegi": Renk.CAMGOBEGI, "beyaz": Renk.BEYAZ,
|
|
46
|
+
"p_kirmizi": Renk.P_KIRMIZI, "p_yesil": Renk.P_YESIL,
|
|
47
|
+
"p_sari": Renk.P_SARI, "p_mavi": Renk.P_MAVI,
|
|
48
|
+
}
|
|
49
|
+
onek = ""
|
|
50
|
+
if kalin:
|
|
51
|
+
onek += Renk.KALIN
|
|
52
|
+
if renk and renk.lower() in renkler:
|
|
53
|
+
onek += renkler[renk.lower()]
|
|
54
|
+
print(f"{onek}{metin}{Renk.SIFIRLA}{sonu}")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# ============ TÜRKÇE KARAKTER DÜZELTİCİ ============
|
|
58
|
+
def turkcelestir(metin):
|
|
59
|
+
"""ASCII karakterleri Türkçe'ye çevirir (örn: 'sehir' -> 'şehir' değil, manuel haritalama)"""
|
|
60
|
+
# Basit ters dönüşüm: Türkçe -> ASCII
|
|
61
|
+
harita = str.maketrans("çÇğĞıİöÖşŞüÜ", "cCgGiIoOsSuU")
|
|
62
|
+
return metin.translate(harita)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def asciilestir(metin):
|
|
66
|
+
"""Türkçe karakterleri ASCII'ye çevirir. Dosya adları için kullanışlı."""
|
|
67
|
+
harita = str.maketrans("çÇğĞıİöÖşŞüÜ", "cCgGiIoOsSuU")
|
|
68
|
+
return metin.translate(harita)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
# ============ KUTU İÇİNDE YAZI ============
|
|
72
|
+
def kutu(metin, renk=None, genislik=None):
|
|
73
|
+
"""Yazıyı çerçeve içinde göster"""
|
|
74
|
+
satirlar = metin.split("\n")
|
|
75
|
+
if genislik is None:
|
|
76
|
+
genislik = max(len(s) for s in satirlar) + 4
|
|
77
|
+
|
|
78
|
+
ust = "╔" + "═" * (genislik - 2) + "╗"
|
|
79
|
+
alt = "╚" + "═" * (genislik - 2) + "╝"
|
|
80
|
+
|
|
81
|
+
yaz(ust, renk=renk)
|
|
82
|
+
for satir in satirlar:
|
|
83
|
+
bosluk = genislik - len(satir) - 4
|
|
84
|
+
yaz(f"║ {satir}{' ' * bosluk} ║", renk=renk)
|
|
85
|
+
yaz(alt, renk=renk)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# ============ İLERLEME ÇUBUĞU ============
|
|
89
|
+
def ilerleme(mevcut, toplam, baslik="İlerleme", uzunluk=30, renk="yesil"):
|
|
90
|
+
"""Progress bar göster. Döngü içinde kullan."""
|
|
91
|
+
oran = mevcut / toplam
|
|
92
|
+
dolu = int(uzunluk * oran)
|
|
93
|
+
bos = uzunluk - dolu
|
|
94
|
+
yuzde = oran * 100
|
|
95
|
+
|
|
96
|
+
renkler = {"yesil": Renk.YESIL, "mavi": Renk.MAVI, "kirmizi": Renk.KIRMIZI, "sari": Renk.SARI}
|
|
97
|
+
r = renkler.get(renk, Renk.YESIL)
|
|
98
|
+
|
|
99
|
+
cubuk = f"\r{baslik}: {r}{'█' * dolu}{Renk.SIFIRLA}{'░' * bos} {yuzde:5.1f}% ({mevcut}/{toplam})"
|
|
100
|
+
sys.stdout.write(cubuk)
|
|
101
|
+
sys.stdout.flush()
|
|
102
|
+
if mevcut >= toplam:
|
|
103
|
+
print()
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
# ============ SPINNER / YÜKLEME ANİMASYONU ============
|
|
107
|
+
class Spinner:
|
|
108
|
+
"""
|
|
109
|
+
Yükleme animasyonu. 'with' bloğu ile kullan.
|
|
110
|
+
|
|
111
|
+
Örnek:
|
|
112
|
+
with Spinner("Veriler indiriliyor..."):
|
|
113
|
+
time.sleep(3)
|
|
114
|
+
"""
|
|
115
|
+
def __init__(self, mesaj="Yükleniyor", renk="camgobegi"):
|
|
116
|
+
self.mesaj = mesaj
|
|
117
|
+
self.renk = renk
|
|
118
|
+
self.calisiyor = False
|
|
119
|
+
self.thread = None
|
|
120
|
+
self.karakterler = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
|
|
121
|
+
|
|
122
|
+
def _donder(self):
|
|
123
|
+
i = 0
|
|
124
|
+
renkler = {"camgobegi": Renk.CAMGOBEGI, "yesil": Renk.YESIL, "sari": Renk.SARI}
|
|
125
|
+
r = renkler.get(self.renk, Renk.CAMGOBEGI)
|
|
126
|
+
while self.calisiyor:
|
|
127
|
+
sys.stdout.write(f"\r{r}{self.karakterler[i % len(self.karakterler)]}{Renk.SIFIRLA} {self.mesaj}")
|
|
128
|
+
sys.stdout.flush()
|
|
129
|
+
time.sleep(0.1)
|
|
130
|
+
i += 1
|
|
131
|
+
sys.stdout.write("\r" + " " * (len(self.mesaj) + 5) + "\r")
|
|
132
|
+
sys.stdout.flush()
|
|
133
|
+
|
|
134
|
+
def __enter__(self):
|
|
135
|
+
self.calisiyor = True
|
|
136
|
+
self.thread = threading.Thread(target=self._donder, daemon=True)
|
|
137
|
+
self.thread.start()
|
|
138
|
+
return self
|
|
139
|
+
|
|
140
|
+
def __exit__(self, *args):
|
|
141
|
+
self.calisiyor = False
|
|
142
|
+
if self.thread:
|
|
143
|
+
self.thread.join()
|
|
144
|
+
yaz(f"✓ {self.mesaj} tamamlandı", renk="yesil")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
# ============ TABLO ============
|
|
148
|
+
def tablo(basliklar, satirlar, renk="camgobegi"):
|
|
149
|
+
"""
|
|
150
|
+
Veri tablosu yazdır.
|
|
151
|
+
|
|
152
|
+
Örnek:
|
|
153
|
+
tablo(["İsim", "Yaş"], [["Ali", 25], ["Ayşe", 30]])
|
|
154
|
+
"""
|
|
155
|
+
# Sütun genişlikleri
|
|
156
|
+
genislikler = [len(str(b)) for b in basliklar]
|
|
157
|
+
for satir in satirlar:
|
|
158
|
+
for i, h in enumerate(satir):
|
|
159
|
+
genislikler[i] = max(genislikler[i], len(str(h)))
|
|
160
|
+
|
|
161
|
+
# Üst çizgi
|
|
162
|
+
ust = "┌" + "┬".join("─" * (g + 2) for g in genislikler) + "┐"
|
|
163
|
+
orta = "├" + "┼".join("─" * (g + 2) for g in genislikler) + "┤"
|
|
164
|
+
alt = "└" + "┴".join("─" * (g + 2) for g in genislikler) + "┘"
|
|
165
|
+
|
|
166
|
+
yaz(ust, renk=renk)
|
|
167
|
+
baslik_satiri = "│" + "│".join(f" {str(b):<{genislikler[i]}} " for i, b in enumerate(basliklar)) + "│"
|
|
168
|
+
yaz(baslik_satiri, renk=renk, kalin=True)
|
|
169
|
+
yaz(orta, renk=renk)
|
|
170
|
+
for satir in satirlar:
|
|
171
|
+
s = "│" + "│".join(f" {str(h):<{genislikler[i]}} " for i, h in enumerate(satir)) + "│"
|
|
172
|
+
print(s)
|
|
173
|
+
yaz(alt, renk=renk)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
# ============ MENÜ ============
|
|
177
|
+
def menu(baslik, secenekler):
|
|
178
|
+
"""
|
|
179
|
+
İnteraktif menü göster, kullanıcının seçtiği indexi döndür.
|
|
180
|
+
|
|
181
|
+
Örnek:
|
|
182
|
+
secim = menu("Ne yapmak istersin?", ["Başla", "Ayarlar", "Çıkış"])
|
|
183
|
+
"""
|
|
184
|
+
yaz("\n" + "═" * 40, renk="camgobegi")
|
|
185
|
+
yaz(f" {baslik}", renk="sari", kalin=True)
|
|
186
|
+
yaz("═" * 40, renk="camgobegi")
|
|
187
|
+
|
|
188
|
+
for i, secenek in enumerate(secenekler, 1):
|
|
189
|
+
yaz(f" {Renk.P_SARI}[{i}]{Renk.SIFIRLA} {secenek}")
|
|
190
|
+
|
|
191
|
+
while True:
|
|
192
|
+
try:
|
|
193
|
+
secim = input(f"\n{Renk.P_YESIL}Seçiminiz (1-{len(secenekler)}): {Renk.SIFIRLA}")
|
|
194
|
+
secim = int(secim)
|
|
195
|
+
if 1 <= secim <= len(secenekler):
|
|
196
|
+
return secim - 1
|
|
197
|
+
yaz("Geçersiz seçim! Tekrar deneyin.", renk="kirmizi")
|
|
198
|
+
except ValueError:
|
|
199
|
+
yaz("Lütfen bir sayı girin!", renk="kirmizi")
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
# ============ EKRAN TEMİZLE ============
|
|
203
|
+
def temizle():
|
|
204
|
+
"""Terminal ekranını temizler"""
|
|
205
|
+
import os
|
|
206
|
+
os.system("clear" if os.name == "posix" else "cls")
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
# ============ BİLGİ / HATA / BAŞARI MESAJLARI ============
|
|
210
|
+
def bilgi(mesaj):
|
|
211
|
+
yaz(f"ℹ {mesaj}", renk="mavi")
|
|
212
|
+
|
|
213
|
+
def basari(mesaj):
|
|
214
|
+
yaz(f"✓ {mesaj}", renk="yesil", kalin=True)
|
|
215
|
+
|
|
216
|
+
def hata(mesaj):
|
|
217
|
+
yaz(f"✗ {mesaj}", renk="kirmizi", kalin=True)
|
|
218
|
+
|
|
219
|
+
def uyari(mesaj):
|
|
220
|
+
yaz(f"⚠ {mesaj}", renk="sari")
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: turkterm
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Türkçe destekli renkli terminal kütüphanesi - spinner, progress bar, menü, tablo ve daha fazlası
|
|
5
|
+
Author: Sen
|
|
6
|
+
Author-email: Senin Adın <senin_mailin@example.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/kullanici-adin/turkterm
|
|
9
|
+
Project-URL: Repository, https://github.com/kullanici-adin/turkterm
|
|
10
|
+
Keywords: terminal,türkçe,renkli,cli,progress-bar,spinner,turkish
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Natural Language :: Turkish
|
|
15
|
+
Classifier: Topic :: Terminals
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
17
|
+
Requires-Python: >=3.6
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Dynamic: author
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
Dynamic: requires-python
|
|
23
|
+
|
|
24
|
+
# turkterm 🇹🇷
|
|
25
|
+
|
|
26
|
+
Türkçe destekli, renkli ve eğlenceli terminal kütüphanesi. Termux ve Pydroid3 ile tam uyumlu.
|
|
27
|
+
|
|
28
|
+
## Kurulum
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install turkterm
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Özellikler
|
|
35
|
+
|
|
36
|
+
- 🎨 Renkli yazı yazdırma
|
|
37
|
+
- 🔄 Spinner (yükleme animasyonu)
|
|
38
|
+
- 📊 Progress bar (ilerleme çubuğu)
|
|
39
|
+
- 📦 Kutu içinde yazı
|
|
40
|
+
- 📋 Tablo gösterme
|
|
41
|
+
- 📜 İnteraktif menü
|
|
42
|
+
- 🇹🇷 Türkçe karakter düzeltici
|
|
43
|
+
- ✓ Bilgi/Hata/Başarı mesajları
|
|
44
|
+
|
|
45
|
+
## Hızlı Başlangıç
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
import turkterm as tt
|
|
49
|
+
|
|
50
|
+
# Renkli yazı
|
|
51
|
+
tt.yaz("Merhaba Dünya!", renk="yesil", kalin=True)
|
|
52
|
+
|
|
53
|
+
# Mesajlar
|
|
54
|
+
tt.basari("İşlem tamamlandı!")
|
|
55
|
+
tt.hata("Bir şeyler yanlış gitti")
|
|
56
|
+
tt.uyari("Dikkatli ol!")
|
|
57
|
+
tt.bilgi("Bilgilendirme mesajı")
|
|
58
|
+
|
|
59
|
+
# Kutu
|
|
60
|
+
tt.kutu("Bu yazı çerçeve içinde", renk="mavi")
|
|
61
|
+
|
|
62
|
+
# Tablo
|
|
63
|
+
tt.tablo(
|
|
64
|
+
["İsim", "Yaş", "Şehir"],
|
|
65
|
+
[["Ali", 25, "İstanbul"], ["Ayşe", 30, "İzmir"]]
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
# Menü
|
|
69
|
+
secim = tt.menu("Ne yapmak istersin?", ["Başla", "Ayarlar", "Çıkış"])
|
|
70
|
+
|
|
71
|
+
# Progress bar
|
|
72
|
+
import time
|
|
73
|
+
for i in range(101):
|
|
74
|
+
tt.ilerleme(i, 100, "İndiriliyor")
|
|
75
|
+
time.sleep(0.02)
|
|
76
|
+
|
|
77
|
+
# Spinner
|
|
78
|
+
with tt.Spinner("Veriler yükleniyor..."):
|
|
79
|
+
time.sleep(3)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Lisans
|
|
83
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
turkterm
|