{"id":3421,"date":"2024-11-09T13:45:19","date_gmt":"2024-11-09T10:45:19","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/"},"modified":"2024-11-09T13:45:19","modified_gmt":"2024-11-09T10:45:19","slug":"5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/","title":{"rendered":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma"},"content":{"rendered":"<p>5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma<\/p>\n<p>G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.<\/p>\n<p>Python ile TUI geli\u015ftirmek i\u00e7in pek \u00e7ok k\u00fct\u00fcphane mevcuttur. Bu makalede, Python ile metin tabanl\u0131 aray\u00fczler olu\u015fturmak i\u00e7in en iyi 5 k\u00fct\u00fcphaneyi inceleyece\u011fiz. Ayr\u0131ca her bir k\u00fct\u00fcphanenin g\u00fc\u00e7l\u00fc ve zay\u0131f y\u00f6nlerini de ele alaca\u011f\u0131z.<\/p>\n<h2>1.  **TUI: curses**<\/h2>\n<p>Python&#8217;da TUI olu\u015fturman\u0131n en eski ve yayg\u0131n y\u00f6ntemlerinden biri <code>curses<\/code> mod\u00fcl\u00fcn\u00fc kullanmakt\u0131r. Bu, temel metin tabanl\u0131 aray\u00fczler olu\u015fturmak i\u00e7in bir dizi fonksiyon ve s\u0131n\u0131f sunan bir standart k\u00fct\u00fcphanedir. <\/p>\n<p><code>curses<\/code> mod\u00fcl\u00fc, ekran\u0131 kontrol etmenizi, karakterler \u00e7izmenizi ve kullan\u0131c\u0131 giri\u015fi alman\u0131za olanak tan\u0131r. Bu, temel aray\u00fczleri olu\u015fturmak i\u00e7in m\u00fckemmel bir se\u00e7enektir. Bununla birlikte, <code>curses<\/code>, daha geli\u015fmi\u015f aray\u00fczler olu\u015ftururken karma\u015f\u0131k hale gelebilir.  Ayr\u0131ca, kullan\u0131m\u0131 platform ba\u011f\u0131ms\u0131zd\u0131r.<\/p>\n<p><code>curses<\/code> mod\u00fcl\u00fcn\u00fc kullanarak basit bir men\u00fc \u00f6rne\u011fi a\u015fa\u011f\u0131dad\u0131r:<\/p>\n<p>&#8220;`python<br \/>\nimport curses<\/p>\n<p>def main(stdscr):<br \/>\n  stdscr.clear()<br \/>\n  stdscr.addstr(0, 0, &#8220;Ana Men\u00fc&#8221;)<br \/>\n  stdscr.addstr(1, 0, &#8220;1. Se\u00e7enek 1&#8221;)<br \/>\n  stdscr.addstr(2, 0, &#8220;2. Se\u00e7enek 2&#8221;)<br \/>\n  stdscr.addstr(3, 0, &#8220;3. \u00c7\u0131k\u0131\u015f&#8221;)<br \/>\n  stdscr.refresh()<\/p>\n<p>  while True:<br \/>\n    key = stdscr.getch()<br \/>\n    if key == ord(&#8216;1&#8217;):<br \/>\n      stdscr.addstr(4, 0, &#8220;Se\u00e7enek 1 se\u00e7ildi!&#8221;)<br \/>\n      stdscr.refresh()<br \/>\n    elif key == ord(&#8216;2&#8217;):<br \/>\n      stdscr.addstr(4, 0, &#8220;Se\u00e7enek 2 se\u00e7ildi!&#8221;)<br \/>\n      stdscr.refresh()<br \/>\n    elif key == ord(&#8216;3&#8217;):<br \/>\n      break<br \/>\n    else:<br \/>\n      stdscr.addstr(4, 0, &#8220;Ge\u00e7ersiz se\u00e7im!&#8221;)<br \/>\n      stdscr.refresh()<\/p>\n<p>curses.wrapper(main)<br \/>\n&#8220;`<\/p>\n<p>Bu \u00f6rnek, basit bir men\u00fc olu\u015fturur ve kullan\u0131c\u0131n\u0131n bir se\u00e7enek se\u00e7mesini bekler. Kullan\u0131c\u0131 &#8220;1&#8221;, &#8220;2&#8221; veya &#8220;3&#8221; tu\u015flar\u0131na basarsa, ilgili eylem ger\u00e7ekle\u015ftirilir.<\/p>\n<h3><code>curses<\/code> mod\u00fcl\u00fcn\u00fcn avantajlar\u0131:<\/h3>\n<ul>\n<li>Standart Python k\u00fct\u00fcphanesinde yer al\u0131r, yani ek bir kurulum gerektirmez.<\/li>\n<li>Platform ba\u011f\u0131ms\u0131zd\u0131r, yani farkl\u0131 i\u015fletim sistemlerinde \u00e7al\u0131\u015fabilir.<\/li>\n<li>Temel metin tabanl\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131m\u0131 kolayd\u0131r.<\/li>\n<\/ul>\n<h3><code>curses<\/code> mod\u00fcl\u00fcn\u00fcn dezavantajlar\u0131:<\/h3>\n<ul>\n<li>Daha geli\u015fmi\u015f aray\u00fczler olu\u015ftururken karma\u015f\u0131k hale gelebilir.<\/li>\n<li>G\u00f6rsel olarak \u00e7ekici aray\u00fczler olu\u015fturmak i\u00e7in uygun de\u011fildir.<\/li>\n<\/ul>\n<h2>2. **TUI:  Urwid**<\/h2>\n<p><code>Urwid<\/code>, Python i\u00e7in pop\u00fcler bir TUI k\u00fct\u00fcphanesidir. <code>curses<\/code>&#8216;e g\u00f6re daha y\u00fcksek seviyeli bir API sa\u011flar, bu da daha karma\u015f\u0131k ve g\u00f6rsel olarak daha \u00e7ekici aray\u00fczler olu\u015fturmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<p><code>Urwid<\/code>, pencereler, d\u00fc\u011fmeler, metin kutular\u0131 ve listeler gibi \u00e7e\u015fitli widget&#8217;lar sunar. Bu widget&#8217;lar\u0131 kullanarak etkile\u015fimli ve kullan\u0131c\u0131 dostu aray\u00fczler olu\u015fturabilirsiniz.<\/p>\n<p><code>Urwid<\/code>&#8216;i kullanarak basit bir men\u00fc \u00f6rne\u011fi a\u015fa\u011f\u0131dad\u0131r:<\/p>\n<p>&#8220;`python<br \/>\nimport urwid<\/p>\n<p>def exit_on_q(key):<br \/>\n  if key in (&#8216;q&#8217;, &#8216;Q&#8217;):<br \/>\n    raise urwid.ExitMainLoop()<\/p>\n<p>def menu_button_clicked(button):<br \/>\n  response = urwid.Text(&#8220;You clicked: &#8221; + button.label)<br \/>\n  loop.widget = urwid.Filler(response)<\/p>\n<p>buttons = [<br \/>\n  urwid.Button(&#8220;Se\u00e7enek 1&#8221;, menu_button_clicked),<br \/>\n  urwid.Button(&#8220;Se\u00e7enek 2&#8221;, menu_button_clicked),<br \/>\n  urwid.Button(&#8220;\u00c7\u0131k\u0131\u015f&#8221;, exit_on_q)<br \/>\n]<\/p>\n<p>menu = urwid.GridFlow(buttons, 20, 4, 1, &#8216;center&#8217;)<br \/>\ntop = urwid.Filler(menu, valign=&#8217;top&#8217;)<br \/>\nloop = urwid.MainLoop(top, unhandled_input=exit_on_q)<br \/>\nloop.run()<br \/>\n&#8220;`<\/p>\n<p>Bu \u00f6rnek, \u00fc\u00e7 d\u00fc\u011fmeli basit bir men\u00fc olu\u015fturur. Kullan\u0131c\u0131 d\u00fc\u011fmelerden birini t\u0131klad\u0131\u011f\u0131nda, ilgili eylem ger\u00e7ekle\u015ftirilir. &#8220;\u00c7\u0131k\u0131\u015f&#8221; d\u00fc\u011fmesi, uygulamay\u0131 sonland\u0131r\u0131r.<\/p>\n<h3><code>Urwid<\/code> k\u00fct\u00fcphanesinin avantajlar\u0131:<\/h3>\n<ul>\n<li>Y\u00fcksek seviyeli API&#8217;si, daha karma\u015f\u0131k aray\u00fczleri olu\u015fturmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li>\u00c7e\u015fitli widget&#8217;lar sunar, bu da esnek ve \u00f6zelle\u015ftirilebilir aray\u00fczler olu\u015fturman\u0131za olanak tan\u0131r.<\/li>\n<li>Renk deste\u011fi ve di\u011fer g\u00f6rsel efektler sa\u011flar.<\/li>\n<\/ul>\n<h3><code>Urwid<\/code> k\u00fct\u00fcphanesinin dezavantajlar\u0131:<\/h3>\n<ul>\n<li><code>curses<\/code>&#8216;den daha karma\u015f\u0131k olabilir, bu da \u00f6\u011frenme e\u011frisini art\u0131rabilir.<\/li>\n<li>Baz\u0131 widget&#8217;lar, t\u00fcm platformlarda tutarl\u0131 g\u00f6r\u00fcnmeyebilir.<\/li>\n<\/ul>\n<h2>3. **TUI:  PyInquirer**<\/h2>\n<p><code>PyInquirer<\/code>, terminal uygulamalar\u0131nda etkile\u015fimli men\u00fcler ve sorgulamalar olu\u015fturmak i\u00e7in tasarlanm\u0131\u015f bir Python k\u00fct\u00fcphanesidir. Kullan\u0131c\u0131 dostu aray\u00fczler olu\u015fturmak i\u00e7in \u00e7e\u015fitli se\u00e7enek men\u00fcs\u00fc, onay kutular\u0131 ve metin giri\u015fi gibi widget&#8217;lar sunar. <\/p>\n<p><code>PyInquirer<\/code>, <code>PromptToolkit<\/code> \u00fczerine kuruludur, bu da etkile\u015fimli komut sat\u0131r\u0131 uygulamalar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc bir k\u00fct\u00fcphanedir.<\/p>\n<p><code>PyInquirer<\/code>&#8216;i kullanarak basit bir men\u00fc \u00f6rne\u011fi a\u015fa\u011f\u0131dad\u0131r:<\/p>\n<p>&#8220;`python<br \/>\nfrom pyinquirer import inquirer<\/p>\n<p>questions = [<br \/>\n  {<br \/>\n    &#8216;type&#8217;: &#8216;list&#8217;,<br \/>\n    &#8216;name&#8217;: &#8216;secenek&#8217;,<br \/>\n    &#8216;message&#8217;: &#8216;Bir se\u00e7enek se\u00e7in:&#8217;,<br \/>\n    &#8216;choices&#8217;: [&#8216;Se\u00e7enek 1&#8217;, &#8216;Se\u00e7enek 2&#8217;, &#8216;\u00c7\u0131k\u0131\u015f&#8217;]<br \/>\n  }<br \/>\n]<\/p>\n<p>answers = inquirer.prompt(questions)<br \/>\nif answers[&#8216;secenek&#8217;] == &#8216;Se\u00e7enek 1&#8217;:<br \/>\n  print(&#8220;Se\u00e7enek 1 se\u00e7ildi!&#8221;)<br \/>\nelif answers[&#8216;secenek&#8217;] == &#8216;Se\u00e7enek 2&#8217;:<br \/>\n  print(&#8220;Se\u00e7enek 2 se\u00e7ildi!&#8221;)<br \/>\nelif answers[&#8216;secenek&#8217;] == &#8216;\u00c7\u0131k\u0131\u015f&#8217;:<br \/>\n  print(&#8220;Uygulama sonland\u0131r\u0131l\u0131yor&#8230;&#8221;)<br \/>\n&#8220;`<\/p>\n<p>Bu \u00f6rnek, kullan\u0131c\u0131n\u0131n bir se\u00e7enek se\u00e7mesini sa\u011flayan basit bir men\u00fc olu\u015fturur. Kullan\u0131c\u0131 se\u00e7eneklerden birini se\u00e7ti\u011finde, ilgili eylem ger\u00e7ekle\u015ftirilir.<\/p>\n<h3><code>PyInquirer<\/code> k\u00fct\u00fcphanesinin avantajlar\u0131:<\/h3>\n<ul>\n<li>Kullan\u0131c\u0131 dostu ve etkile\u015fimli aray\u00fczler olu\u015fturmak i\u00e7in kullan\u0131m\u0131 kolayd\u0131r.<\/li>\n<li>\u00c7e\u015fitli widget&#8217;lar sunar, bu da uygulaman\u0131z i\u00e7in farkl\u0131 soru t\u00fcrleri olu\u015fturman\u0131za olanak tan\u0131r.<\/li>\n<li>G\u00fc\u00e7l\u00fc <code>PromptToolkit<\/code> k\u00fct\u00fcphanesi \u00fczerine kuruludur, bu da ek \u00f6zellikler sa\u011flar.<\/li>\n<\/ul>\n<h3><code>PyInquirer<\/code> k\u00fct\u00fcphanesinin dezavantajlar\u0131:<\/h3>\n<ul>\n<li>Karma\u015f\u0131k aray\u00fczler olu\u015fturmak i\u00e7in uygun de\u011fildir.<\/li>\n<li>Kullan\u0131c\u0131 deneyimi, platformlar aras\u0131nda biraz farkl\u0131l\u0131k g\u00f6sterebilir.<\/li>\n<\/ul>\n<h2>4. **TUI:  Prompt Toolkit**<\/h2>\n<p><code>Prompt Toolkit<\/code>, etkile\u015fimli komut sat\u0131r\u0131 uygulamalar\u0131 olu\u015fturmak i\u00e7in kullan\u0131labilen g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir. <code>PyInquirer<\/code> gibi, <code>Prompt Toolkit<\/code> de kullan\u0131c\u0131 dostu aray\u00fczler olu\u015fturmak i\u00e7in bir dizi widget ve \u00f6zellik sunar.<\/p>\n<p><code>Prompt Toolkit<\/code>, temel metin d\u00fczenleme deste\u011fi, tamamlama, renklendirme ve daha fazlas\u0131 gibi \u00f6zellikler sa\u011flar. <code>Prompt Toolkit<\/code>, karma\u015f\u0131k komut sat\u0131r\u0131 uygulamalar\u0131 ve etkile\u015fimli aray\u00fczler olu\u015fturmak i\u00e7in m\u00fckemmel bir se\u00e7enektir.<\/p>\n<p><code>Prompt Toolkit<\/code>&#8216;i kullanarak basit bir men\u00fc \u00f6rne\u011fi a\u015fa\u011f\u0131dad\u0131r:<\/p>\n<p>&#8220;`python<br \/>\nfrom prompt_toolkit import prompt<br \/>\nfrom prompt_toolkit.completion import WordCompleter<\/p>\n<p>choices = [&#8216;Se\u00e7enek 1&#8217;, &#8216;Se\u00e7enek 2&#8217;, &#8216;\u00c7\u0131k\u0131\u015f&#8217;]<br \/>\ncompleter = WordCompleter(choices)<\/p>\n<p>answer = prompt(&#8216;Bir se\u00e7enek se\u00e7in: &#8216;, completer=completer)<br \/>\nif answer == &#8216;Se\u00e7enek 1&#8217;:<br \/>\n  print(&#8220;Se\u00e7enek 1 se\u00e7ildi!&#8221;)<br \/>\nelif answer == &#8216;Se\u00e7enek 2&#8217;:<br \/>\n  print(&#8220;Se\u00e7enek 2 se\u00e7ildi!&#8221;)<br \/>\nelif answer == &#8216;\u00c7\u0131k\u0131\u015f&#8217;:<br \/>\n  print(&#8220;Uygulama sonland\u0131r\u0131l\u0131yor&#8230;&#8221;)<br \/>\n&#8220;`<\/p>\n<p>Bu \u00f6rnek, kullan\u0131c\u0131n\u0131n bir se\u00e7enek se\u00e7mesini sa\u011flayan basit bir men\u00fc olu\u015fturur. Kullan\u0131c\u0131 se\u00e7eneklerden birini se\u00e7ti\u011finde, ilgili eylem ger\u00e7ekle\u015ftirilir. Bu \u00f6rnek ayr\u0131ca <code>Prompt Toolkit<\/code>&#8216;in tamamlama \u00f6zelli\u011fini g\u00f6sterir.<\/p>\n<h3><code>Prompt Toolkit<\/code> k\u00fct\u00fcphanesinin avantajlar\u0131:<\/h3>\n<ul>\n<li>Etkile\u015fimli komut sat\u0131r\u0131 uygulamalar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir k\u00fct\u00fcphanedir.<\/li>\n<li>Tamamlama, renklendirme ve di\u011fer \u00f6zellikler sa\u011flar, bu da kullan\u0131c\u0131 deneyimini iyile\u015ftirir.<\/li>\n<li>Kullan\u0131c\u0131 girdisini \u00f6zelle\u015ftirmek i\u00e7in geni\u015f se\u00e7enekler sunar.<\/li>\n<\/ul>\n<h3><code>Prompt Toolkit<\/code> k\u00fct\u00fcphanesinin dezavantajlar\u0131:<\/h3>\n<ul>\n<li>Karma\u015f\u0131k aray\u00fczler olu\u015fturmak i\u00e7in kullan\u0131m\u0131 zor olabilir.<\/li>\n<li>Daha karma\u015f\u0131k aray\u00fczler i\u00e7in daha fazla kodlama gerektirebilir.<\/li>\n<\/ul>\n<h2>5. **TUI:  Rich**<\/h2>\n<p><code>Rich<\/code>, terminal \u00e7\u0131kt\u0131s\u0131n\u0131 zenginle\u015ftirmek i\u00e7in tasarlanm\u0131\u015f bir Python k\u00fct\u00fcphanesidir. <code>Rich<\/code>, renkli metin, tablolar, paneller, ilerleme \u00e7ubuklar\u0131 ve daha fazlas\u0131n\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in bir dizi ara\u00e7 sunar. <code>Rich<\/code>, TUI&#8217;ler olu\u015fturmak i\u00e7in m\u00fckemmel bir se\u00e7imdir \u00e7\u00fcnk\u00fc aray\u00fczleri daha g\u00f6rsel olarak \u00e7ekici hale getirmenize olanak tan\u0131r.<\/p>\n<p><code>Rich<\/code>&#8216;i kullanarak basit bir men\u00fc \u00f6rne\u011fi a\u015fa\u011f\u0131dad\u0131r:<\/p>\n<p>&#8220;`python<br \/>\nfrom rich import print<\/p>\n<p>print(&#8220;[bold blue]Ana Men\u00fc[\/]&#8221;)<br \/>\nprint(&#8220;[bold green]1. Se\u00e7enek 1[\/]&#8221;)<br \/>\nprint(&#8220;[bold green]2. Se\u00e7enek 2[\/]&#8221;)<br \/>\nprint(&#8220;[bold red]3. \u00c7\u0131k\u0131\u015f[\/]&#8221;)<\/p>\n<p>secenek = input(&#8220;Bir se\u00e7enek se\u00e7in: &#8220;)<br \/>\nif secenek == &#8216;1&#8217;:<br \/>\n  print(&#8220;Se\u00e7enek 1 se\u00e7ildi!&#8221;)<br \/>\nelif secenek == &#8216;2&#8217;:<br \/>\n  print(&#8220;Se\u00e7enek 2 se\u00e7ildi!&#8221;)<br \/>\nelif secenek == &#8216;3&#8217;:<br \/>\n  print(&#8220;Uygulama sonland\u0131r\u0131l\u0131yor&#8230;&#8221;)<br \/>\n&#8220;`<\/p>\n<p>Bu \u00f6rnek, <code>Rich<\/code>&#8216;i kullanarak basit bir men\u00fc olu\u015fturur. Men\u00fc \u00f6\u011feleri renklendirilmi\u015f olarak g\u00f6r\u00fcnt\u00fclenir, bu da onlar\u0131 daha g\u00f6rsel olarak \u00e7ekici hale getirir. <code>Rich<\/code>&#8216;in di\u011fer \u00f6zellikleri de kullan\u0131labilir, \u00f6rne\u011fin tablolar, paneller ve ilerleme \u00e7ubuklar\u0131.<\/p>\n<h3><code>Rich<\/code> k\u00fct\u00fcphanesinin avantajlar\u0131:<\/h3>\n<ul>\n<li>Terminal \u00e7\u0131kt\u0131s\u0131n\u0131 zenginle\u015ftirmek i\u00e7in kullan\u0131m\u0131 kolayd\u0131r.<\/li>\n<li>\u00c7e\u015fitli renkler, tablolar, paneller ve ilerleme \u00e7ubuklar\u0131 sa\u011flar.<\/li>\n<li>TUI&#8217;ler olu\u015fturmak i\u00e7in kullan\u0131labilir, ancak ayr\u0131ca g\u00fcnl\u00fckleri ve di\u011fer \u00e7\u0131kt\u0131lar\u0131 daha g\u00f6rsel olarak \u00e7ekici hale getirmek i\u00e7in de kullan\u0131labilir.<\/li>\n<\/ul>\n<h3><code>Rich<\/code> k\u00fct\u00fcphanesinin dezavantajlar\u0131:<\/h3>\n<ul>\n<li>Di\u011fer TUI k\u00fct\u00fcphaneleri kadar \u00f6zel widget&#8217;lar sunmaz.<\/li>\n<li>Baz\u0131 widget&#8217;lar, t\u00fcm platformlarda tutarl\u0131 g\u00f6r\u00fcnmeyebilir.<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu makalede, Python&#8217;da TUI geli\u015ftirmek i\u00e7in 5 en iyi k\u00fct\u00fcphaneyi inceledik. <code>curses<\/code>, temel TUI&#8217;ler olu\u015fturmak i\u00e7in iyi bir se\u00e7enektir. <code>Urwid<\/code>, daha karma\u015f\u0131k ve g\u00f6rsel olarak daha \u00e7ekici aray\u00fczler olu\u015fturmak i\u00e7in daha iyi bir se\u00e7imdir. <code>PyInquirer<\/code>, etkile\u015fimli men\u00fcler ve sorgulamalar olu\u015fturmak i\u00e7in idealdir. <code>Prompt Toolkit<\/code>, karma\u015f\u0131k komut sat\u0131r\u0131 uygulamalar\u0131 ve etkile\u015fimli aray\u00fczler olu\u015fturmak i\u00e7in m\u00fckemmel bir se\u00e7enektir. <code>Rich<\/code>, terminal \u00e7\u0131kt\u0131s\u0131n\u0131 zenginle\u015ftirmek i\u00e7in kullan\u0131m\u0131 kolayd\u0131r.<\/p>\n<p>Hangi k\u00fct\u00fcphaneyi se\u00e7ece\u011finiz, projenizin \u00f6zel ihtiya\u00e7lar\u0131na ba\u011fl\u0131d\u0131r. \u00d6rne\u011fin, basit bir aray\u00fcz olu\u015fturmak i\u00e7in <code>curses<\/code> yeterli olabilir. Ancak, daha karma\u015f\u0131k ve g\u00f6rsel olarak daha \u00e7ekici bir aray\u00fcz olu\u015fturmak i\u00e7in <code>Urwid<\/code> veya <code>Prompt Toolkit<\/code> kullanman\u0131z gerekebilir. <\/p>\n<p>Metin tabanl\u0131 aray\u00fczleri olu\u015fturmak, \u00e7e\u015fitli uygulamalar i\u00e7in etkili bir yol olabilir. Python, \u00e7e\u015fitli TUI k\u00fct\u00fcphaneleriyle, bu aray\u00fczleri olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc bir se\u00e7enektir. Bu k\u00fct\u00fcphaneleri kullanarak, etkile\u015fimli ve kullan\u0131c\u0131 dostu metin tabanl\u0131 uygulamalar olu\u015fturabilirsiniz.<\/p>\n<p>Daha fazla bilgi i\u00e7in <code>curses<\/code>, <code>Urwid<\/code>, <code>PyInquirer<\/code>, <code>Prompt Toolkit<\/code> ve <code>Rich<\/code> belgelerine bakabilirsiniz. Ayr\u0131ca, Python TUI geli\u015ftirme hakk\u0131nda daha fazla bilgi edinmek i\u00e7in internette arama yapabilirsiniz.<\/p>\n<p>Benim bloguma <a href=\"https:\/\/fatihsoysal.com\">fatihsoysal.com<\/a> adresinden ula\u015fabilirsiniz.<\/p>\n<p>#Etiketler<br \/>\nPython, TUI, Kullan\u0131c\u0131 Aray\u00fcz\u00fc, curses, Urwid, PyInquirer, Prompt Toolkit, Rich, Metin Tabanl\u0131, Aray\u00fcz, Geli\u015ftirme, Programlama<\/p>\n","protected":false},"excerpt":{"rendered":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor.&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-3421","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma<\/title>\n<meta name=\"description\" content=\"G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-09T10:45:19+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma\",\"datePublished\":\"2024-11-09T10:45:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\"},\"wordCount\":1669,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#respond\"]}],\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\",\"name\":\"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2024-11-09T10:45:19+00:00\",\"description\":\"G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma","description":"G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/","og_locale":"tr_TR","og_type":"article","og_title":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma","og_description":"G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.","og_url":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2024-11-09T10:45:19+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma","datePublished":"2024-11-09T10:45:19+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/"},"wordCount":1669,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#respond"]}],"copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/","url":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/","name":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2024-11-09T10:45:19+00:00","description":"G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131 aray\u00fczleri genellikle grafiksel olarak tasarlan\u0131yor. Ancak baz\u0131 durumlarda metin tabanl\u0131 aray\u00fczler (TUI) daha pratik olabilir. \u00d6rne\u011fin, komut sat\u0131r\u0131 uygulamalar\u0131, sunucular ve terminal tabanl\u0131 oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi \u00e7ok y\u00f6nl\u00fc bir programlama dili, TUI geli\u015ftirmek i\u00e7in m\u00fckemmel bir platform sunar.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/5-en-iyi-python-tui-kutuphanesi-metin-tabanli-kullanici-arayuzleri-olusturma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"5 En \u0130yi Python TUI K\u00fct\u00fcphanesi: Metin Tabanl\u0131 Kullan\u0131c\u0131 Aray\u00fczleri Olu\u015fturma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/3421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=3421"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/3421\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=3421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=3421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=3421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}