Как выводить значение в функции в Label

Возникла проблема, я подключаю файл с функцией и вызываю функцию на исполнение в программе по нажатию кнопки. Но дело в том что программа вылетает.Функция отрабатывается отлично и без ошибок, но как связать это с графическим интерфейсом.Может есть где почитать об этом или подскажите? Это основной код на питон

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets,QtCore
import pars_xml

    class MyWindow(QtWidgets.QWidget):
        def __init__(self,parent = None):
            QtWidgets.QWidget.__init__(self,parent)
            #создание Text viev
            self.label = QtWidgets.QLabel()
            self.label.setAlignment(QtCore.Qt.AlignCenter)
            self.label.resize(50,50)

            #создание кнопок
            self.btnQuit = QtWidgets.QPushButton("&Закрыть окно")
            self.btnInf = QtWidgets.QPushButton("Вывести в Group Box")

            #Создание контейнера основного окна
            self.vbox = QtWidgets.QVBoxLayout()# создается вертикальный контейнер при добавлении обьектов будут распологаться вертекально по мер добавления
            self.vbox.addWidget(self.label)
            self.vbox.addWidget(self.btnInf)
            self.vbox.addWidget(self.btnQuit)
            self.setLayout(self.vbox)#добавление vbox в основное окно.Таким образом контейнер становиттся потоком основного окна

            #Создание обработчика кнопок
            self.btnQuit.clicked.connect(QtWidgets.qApp.quit)
            self.btnInf.clicked.connect(self.clickinf)

        def clickinf(self):
            self.label.config(text = pars_ex.pars())
            self.btnInf.setDisabled(True)



    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        win = MyWindow()
        win.setWindowTitle("Парс Excel")
        win.resize(700,700)
        win.show()
        sys.exit(app.exec_())

А это код с самой функцией

import openpyxl
from openpyxl import load_workbook
from datetime import datetime


def pars():
    dj = openpyxl.Workbook()#создание открытого файла
    dj = load_workbook(filename ="main.xlsx")#открытие и указания на файл
    sheets = dj.sheetnames#получение имён листов
    sheet_ranges = dj['Лист1']#указания на лист в котормо мы работает
    day = int(datetime.strftime(datetime.now(),"%d"))
    i=0
    while i<=16:#создание цикла
        i+=1
        #print(sheet_ranges['A' + str(i)].value + ' ' + str(sheet_ranges['F' + str(i)].value))
        if i%2!= 0:
            if i == 1:
                print("===========================")
            else:
                j = i-1
                #print(str(sheet_ranges['B' + str(j)].value) + "," + str(sheet_ranges['C'+str(j)].value) + "," + str(sheet_ranges['D'+str(j)].value) + "," + str(sheet_ranges['E'+str(j)].value))
                #print("===========================")
                b1 = sheet_ranges['B' + str(j)].value
                c1 = sheet_ranges['C'+str(j)].value
                e1 = sheet_ranges['E'+str(j)].value
                if b1==day or c1 == day or e1 == day:
                    name = str(sheet_ranges['A' + str(i)].value + ' ' + str(sheet_ranges['F' + str(i)].value))
                    #print(name)
                    name1 = str(sheet_ranges['A' + str(i+1)].value + ' ' + str(sheet_ranges['F' + str(i+1)].value))
                    #print(name1)
                    #print("===========================")
                    return name,name1

print(pars())

Ответы (2 шт):

Автор решения: Alexander Chernin

Делайте так, - на clickinf вызывайте диалог выбора файла:

def clickinf(self):
    # getOpenFileName - можно вызвать с 
    # параметром options=QtGui.QFileDialog.DontUseNativeDialog
    # Если нативный диалог будет долго грузиться

    filename = QtGui.QFileDialog.getOpenFileName(filter='*.xlsx')

    # Если с файлом все в порядке, то
    if filename:
        # Передаем его в качестве аргумента в функцию парсинга
        # Которая возвращает тупл
        name1, name2 = pars_ex.pars(filename)

        # Теперь показываем наши значения в label методом setText!
        self.label.setText('{}/{}'.format(name1, name2))

Метод pars должен быть таким:

def pars(filename):
    ...
    dj = load_workbook(filename=filename) #открытие и указания на файл
    ...
    while(i <= 16):
       ...
       if b1==day or c1 == day or e1 == day:
           ...
           return name, name1

    # Если ничего не найдено, то возвращаем пустой тупл
    return '', ''
→ Ссылка
Автор решения: Sheva12

Код полностью рабочий который написан выше только строка

filename = QtGui.QFileDialog.getOpenFileName(filter='*.xlsx')

Должна быть заменена на :

filename = QtWidgets.QFileDialog.getOpenFileName(filter='*.xlsx')

А так у меня ошибка переполнение буфера стека!

→ Ссылка