DeaD_EyE icon

guten_abend_gui.py

DeaD_EyE | PRO | 03/23/23 08:08:26 PM UTC | 0 ⭐ | 1210 👁️ | Never ⏰ | []
Python |

2.36 KB

|

None

|

0 👍

/

0 👎

import random
import sys
from io import StringIO
from tkinter import END, Button, Text, Tk, TclError
 
 
class Greetings:
    GREET = (
        "Bonne journée",
        "Добрый день",
        "良い一日",
        "Seid gegrüßt 🫂",
        "Guten Abend 🌙",
        "Hallo ❤️‍🔥",
    )
 
    def __init__(self):
        self.greetings = self._sample()
 
    def _sample(self):
        return random.sample(self.GREET, k=len(self.GREET))
 
    def __call__(self):
        if not self.greetings:
            self.greetings = self._sample()
        return self.greetings.pop()
 
 
def blocks(namen, greetings, file=None):
    if file is None:
        file = sys.stdout
 
    namen = sorted(namen, key=str.lower)
    blk = 1
    done = False
    current = greetings()
 
    while namen:
        if len(current) + len(namen[0]) + 2 < 200:
            current += f" @{namen.pop(0)}"
            done = False
        else:
            # print(f"[{blk}]", file=file)
            print(current, file=file)
            blk += 1
            current = greetings()
            print(file=file)
            done = True
 
    if not done:
        #print(f"[{blk}]", file=file)
        print(current, file=file)
 
    return file
 
 
def strip_names(lines):
    return [stripped for line in lines if (stripped := line.strip())]
 
 
class GUI(Tk):
    def __init__(self):
        super().__init__()
        self.text = Text(self, height=18, width=80)
        self.text.pack()
        self.insert_text()
        Button(self, text="Generate", command=self.text_generate).pack()
        Button(self, text="Clear", command=self.text_delete).pack()
        Button(self, text="Close", command=self.destroy).pack()
 
    def insert_text(self):
        try:
            if text := self.text.clipboard_get().strip():
                self.text.insert("1.0", text)
                self.text_generate()
        except TclError:
            pass
 
    def text_delete(self):
        self.text.delete("1.0", END)
 
    def text_generate(self):
        s = self.text.get("1.0", END)
        self.text.delete("1.0", END)
        io = StringIO()
        blocks(strip_names(s.splitlines()), Greetings(), io)
        self.text.insert("1.0", io.getvalue())
        self.text.clipboard_append(s)
 
 
if __name__ == "__main__":
    GUI().mainloop()
 
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎