Как передать возвращаемое значение командной функции кнопки в качестве ввода командной функции другой кнопки - PullRequest
0 голосов
/ 03 февраля 2019

Я новичок в tkinter, пожалуйста, помогите мне.Я реализовал модуль (PDF2Text.Py), который в своем классе имеет функцию (convert_pdf_to_txt (path)), которая берет путь к файлу PDF и преобразует файл PDF в текст.

Я также реализовал другой модуль (TopicModeling.py), что в его классе есть функция (creat_LDA_model (text)), которая принимает текст и выполняет моделирование темы на тексте.

Теперь я хочу графический интерфейс пользователя tkinter, который после нажатия кнопки «Обзор»кнопка просматривает путь с filedialog.askopenfilename и ее командная функция отправляет указанный путь в функцию convert_pdf_to_txt (path) из PDF2Text.Py.

Затем, нажав кнопку «Модель», ее командная функция получает текст иотправьте ей функцию creat_LDA_model (text) в TopicModeling.py и покажите результат в виджете 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)
   ...????

результат (темы и графики) должен отображаться в графическом интерфейсе в некоторых виджетах.

Myпроблема об этой командной функции.как передать pdfText в функцию модели, как показать результаты и в каком типе виджетов?

спасибо

1 Ответ

0 голосов
/ 03 февраля 2019

Если у вас небольшая программа, самый простой способ - использовать глобальные переменные для общих данных:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...