我在Tkinter的新请帮助我。我已经实现了一个模块(PDF2Text.Py),该模块的类具有一个函数(convert_pdf_to_txt(path)),该函数采用pdf文件的路径并将pdf文件转换为文本。
我还实现了另一个模块(TopicModeling.py),该模块的类具有一个函数(creat_LDA_model(text)),该函数接受文本并对该文本进行主题建模。
现在,我想要tkinter GUI,即单击“浏览”按钮时,它将使用filedialog.askopenfilename浏览路径,其命令功能将给定的路径发送到PDF2Text.Py的convert_pdf_to_txt(path)函数。
然后,通过单击“模型”按钮,其命令功能获取文本并将其发送给TopicModeling.py中的creat_LDA_model(text)函数,并在Entry小部件或任何其他小部件类型中显示结果。
我想知道GUI模块的结构;在按钮的命令功能中如何从GUI模块调用或获取参数并将其设置为其他模块/功能。
让我解释更多:
假设这是我的代码:
import tkinter
from tkinter import filedialog
import TopicModeling
import Pdf2Text
window = tkinter.Tk()
window.title("Welcome to test tkinter app")
window.geometry('750x600')# Setting Window Size
lbl = tkinter.Label(window, text="Select a pdf file:", font=("Arial Bold", 15))#Set Label Font Size
lbl.grid(column=0, row=0)#set its position on the form
def Return_pdfText():
filename = filedialog.askopenfilename(filetypes = (("pdf files","*.pdf"),("all files","*.*")))
mytext = Pdf2Text.Pdf2Text(filename)
PdfText=mytext.convert_pdf_to_txt(filename)
return PdfText
Button=tkinter.Button(window,text="Browse",command=Return_pdfText)
Button.grid(column=0, row=1)
window.mainloop()
我要放置另一个按钮,即“模型”。它的命令函数应获取pdfText作为输入并对其进行建模,如下所示:
Button=tkinter.Button(window,text="Model",command=Model)
Button.grid(column=1, row=1)
def Model(pdfText): #??
my_LDA_model= TopicModeling.TopicModeling(PdfText)
model=my_LDA_model.create_lda_model()
my_LDA_model.WordCloud_topics(model)
...????
结果(主题和图形)应在某些小部件的GUI中显示。
我的问题是关于此命令功能的。如何将pdfText传递给模型函数,如何显示结果以及以哪种类型的小部件?
谢谢
答案 0 :(得分:0)
当您有一个小程序时,最简单的方法是对共享数据使用全局变量:
def Return_pdfText():
global PdfText # Put the variable in the global scope
filename = filedialog.askopenfilename(filetypes = (("pdf files","*.pdf"),("all files","*.*")))
mytext = Pdf2Text.Pdf2Text(filename)
PdfText = mytext.convert_pdf_to_txt(filename) # Assign to global variable
为PdfText
分配一个值后,该值将可用于Model()
函数,而您无需传递它:
def Model():
my_LDA_model = TopicModeling.TopicModeling(PdfText)
model = my_LDA_model.create_lda_model()
my_LDA_model.WordCloud_topics(model)