mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2026-04-27 12:18:15 +00:00
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
'''
|
|
Word Cloud Generator
|
|
This program generates a word cloud from user input text.
|
|
Author: ChatDev
|
|
'''
|
|
import tkinter as tk
|
|
from tkinter import messagebox, filedialog
|
|
from wordcloud import WordCloud
|
|
import matplotlib.pyplot as plt
|
|
from PIL import ImageTk, Image
|
|
class WordCloudGenerator:
|
|
def __init__(self):
|
|
self.root = tk.Tk()
|
|
self.root.title("Word Cloud Generator")
|
|
self.text_entry = tk.Text(self.root, height=10, width=50)
|
|
self.text_entry.pack()
|
|
self.generate_button = tk.Button(self.root, text="Generate Word Cloud", command=self.generate_word_cloud)
|
|
self.generate_button.pack()
|
|
self.canvas = tk.Canvas(self.root, width=400, height=400)
|
|
self.canvas.pack()
|
|
self.root.mainloop()
|
|
def generate_word_cloud(self):
|
|
text = self.text_entry.get("1.0", tk.END)
|
|
if not text.strip():
|
|
messagebox.showerror("Error", "Please enter some text.")
|
|
return
|
|
file_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG Image", "*.png")])
|
|
if not file_path:
|
|
return
|
|
wordcloud = WordCloud().generate(text)
|
|
plt.imshow(wordcloud, interpolation='bilinear')
|
|
plt.axis("off")
|
|
plt.savefig(file_path)
|
|
plt.close()
|
|
self.update_canvas(file_path)
|
|
def update_canvas(self, image_path):
|
|
image = Image.open(image_path)
|
|
image = image.resize((400, 400), Image.ANTIALIAS)
|
|
self.wordcloud_image = ImageTk.PhotoImage(image)
|
|
self.canvas.create_image(0, 0, anchor=tk.NW, image=self.wordcloud_image)
|
|
if __name__ == "__main__":
|
|
WordCloudGenerator() |