我正在尝试使用消息框来显示我的函数的输出,但是当函数显示在终端中时,它不会显示在消息框中。消息框是正确的还是我应该使用的另一个功能?我只是想让 x 单词显示在 GUI 上。
#Imports
import tkinter as tk
from tkinter import *
from tkinter import filedialog
from collections import Counter
from tkinter import messagebox
import collections
# Initialize the dictionary
wordcount = {}
#open Macbeth text file
file = open('Macbeth Entire Play.txt', encoding="utf8")
a= file.read()
class Application(tk.Frame):
def __init__(self, master):
super().__init__() # Call __init__() method in parent (tk.Frame)
self.label = tk.Button(self, text='How many words to Sort?', command=self.ask_count)
self.label.grid(row=0)
self.open_btn = tk.Button(text='Compute', command=self.ask_count)
self.open_btn.pack(pady=(30,10))
self.exit_btn = tk.Button(text='Exit', command=master.destroy)
self.exit_btn.pack()
def ask_count(self):
with open('Macbeth Entire Play.txt', encoding="utf8") as file:
self.file_text = file.read()
for word in a.lower().split():
word = word.replace(".","")
word = word.replace(",","")
word = word.replace(":","")
word = word.replace("\"","")
word = word.replace("!","")
word = word.replace("“","")
word = word.replace("‘","")
word = word.replace("*","")
if word not in wordcount:
wordcount[word] = 1
else:
wordcount[word] += 1
n_print = int(input("How many most common words are: "))
print("\nThe {} most common words are as follows\n".format(n_print))
word_counter = collections.Counter(wordcount)
for word, count in word_counter.most_common(n_print):
print(word, ": ", count)
messagebox.showinfo("The top words are: " == n_print)
# Close the file
file.close()
messagebox.showinfo("The top words are: ")
if __name__ == '__main__':
root = tk.Tk()
root.title("Count words")
root.geometry('400x400+900+50')
app = Application(root)
app.pack(expand=True, fill='both')
root.mainloop()