@PionShpion

PyQt5 вывод результата функции в окно виджета?

Добрый день!
С помощью pyqt5 пишу виджет. Самый простой: две кнопки и окно отображения информации (QTextBrowser) (может неправильно этот Browser использовать).
Кнопка 1 запускает парсер.
Кнопка 2 "выход" (с этим все ОК, разобрался)

С кодом выполнения парсера все ОК. Работает. Пишет результат и в БД и в файл если нужно.
Но вот никак не могу сделать так, что бы при каждом нажатии кнопки 1 результат работы парсека выводился не командной строке, а в окне в виджете. Воюю с QTextBrowser, но ничего не получается.
Подскажите где копать или примером кода кнопки.
Спасибо.
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from grab import Grab
from grab import transport
from grab.transport import curl
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import (QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QApplication, QMainWindow, QTextBrowser)
from PyQt5.QtGui import QTextDocument

def res():
    g = Grab()
    g.go('http://google.com/')
    global a; a = g.doc.select('//p').text()
    if (a.startswith("Не Спать")):
        return ((a[9:]))
    else:
        return("Cпать")
    pass


class ConfigProgram(QtWidgets.QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.section1 = Section(self)
        self.stack = None
        self.build_widget()

    def build_widget(self):
        self.setWindowTitle('Фия')

        # Виджет в котором мы выбираем раздел настроек
        self.tree = QTextBrowser()
        self.tree.setMaximumWidth(500)
        self.tree.setMinimumHeight(100)
        a = res()
        self.tree.setText(str(a))
        #url = QtCore.QUrl('c.txt')
        #tree.setSource(url)

        self.stack = QtWidgets.QStackedWidget()
        self.stack.addWidget(self.section1)

        button_panel = self.create_button_panel()

        main_layout = QtWidgets.QGridLayout()  # Главный компановщик элементов окна
        main_layout.addWidget(self.tree, 0, 1)
        main_layout.addWidget(self.stack, 1, 1)
        main_layout.addWidget(button_panel, 1, 1)

        self.setLayout(main_layout)

    def create_button_panel(self):
        """        Создает виджет, в котором размещается кнопка выхода        """
        button_panel = QtWidgets.QWidget()

        layout = QtWidgets.QHBoxLayout()
        layout.addStretch(1)

        okButton = QtWidgets.QPushButton('OK')
        okButton.clicked.connect(self.buttonClicked)
        cancelButton = QtWidgets.QPushButton('Закрыть')
        cancelButton.clicked.connect(self.close)
        layout.addWidget(okButton)
        button_panel.setLayout(layout)
        layout.addWidget(cancelButton)
        button_panel.setLayout(layout)
        return button_panel

    def buttonClicked(self):
        print((a[9:]))
        sender = self.sender()


class Section(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Section, self).__init__(parent)
        self.line_edit = []
        self.build_widget()

    def build_widget(self):
        form = QtWidgets.QFormLayout()
        self.setLayout(form)

app = QtWidgets.QApplication([])
window = ConfigProgram()
window.show()
app.exec_()
  • Вопрос задан
  • 4916 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sergey6661313
1) для кода есть специальная кнопочка при оформлении вопроса (3 точки и выбрать code)
2) написали бы хотябы как именно пытались установить в форму текст. Ну например хотябы так:
def buttonClicked(self):
        print((a[9:]))
        window.tree.setText(str(a[9:]))
        sender = self.sender()

А потом уже код ошибки или на что он у вас там ругается...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы