如何通过一个按钮的命令函数的返回值作为另一个按钮的命令的功能的输入

问题描述 投票:0回答:1

我在Tkinter的新请帮助我。我实现了一个模块(PDF2Text.Py),它的类有一个函数(convert_pdf_to_txt(路径)),其采用PDF文件的路径和PDF文件转换为文本。

我还实施了另一个模块(TopicModeling.py),它的类有一个函数(creat_LDA_model(文本)),需要一个文本,并做主题建模上的文字。

现在,我想的Tkinter的GUI即,在单击“浏览”按钮,浏览它的路径与filedialog.askopenfilename及其命令函数发送给定的路径convert_pdf_to_txt PDF2Text.Py的(路径)功能。

然后点击“模式”按钮,它的命令功能获取文本,并将其发送creat_LDA_model(文本)功能TopicModeling.py并显示结果中的文本输入构件或任何其他构件类型。

我想知道的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)
   ...????

结果(主题和图表)应在一些窗口小部件的图形用户界面被显示。

我的问题是关于这个命令的功能。如何通过pdfText建模功能,如何显示结果,并在哪种类型的窗口小部件?

谢谢

python user-interface tkinter
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.