В python как вывести str из другого класса в pyqt textBrowser - PullRequest
0 голосов
/ 03 марта 2020

Я хочу показать текст в окне pyqt, вот мое главное окно mainUi.py:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QApplication, QWidget, QMessageBox)

class Ui_MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

    def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
        MainWindow.resize(622, 634)
        '''
        some widget
        '''
        #here is the method I want to use:
        def printf(self,mypstr): 
            self.textBrowser.append(mypstr) 

Второй файл - это окно входа в систему login.py:

from PyQt5 import (QtCore, QtGui, QtWidgets)
from PyQt5.QtWidgets import (QMessageBox, QLineEdit)
from PyQt5.QtCore import  Qt
from bs4 import BeautifulSoup
import main
from mainUi import Ui_MainWindow as uiWindow

class Ui_LoginBox(QtWidgets.QDialog):

    def setupLogAccUi(self, Dialog):
        Dialog.setObjectName("Login")
        Dialog.resize(430, 190)
        '''
        some widget
        '''

        if 1==1:
            self.loginBox.accepted.connect(Dialog.accept) 
            #some text I'm tring to output to the main window:
            uiWindow.printf ('try') 

Когда я запускаю main, он показывает: printf () отсутствует 1 обязательный позиционный аргумент: 'mypstr', однако первый аргумент в printf (self, mypstr) это self. Я пробовал два дня, но не могу избавиться от этого. Может ли кто-нибудь помочь мне с этой проблемой? Сначала спасибо.

1 Ответ

0 голосов
/ 03 марта 2020

Вы не должны пытаться манипулировать главным окном из диалогового окна входа в систему. Вместо этого вы можете использовать переменную экземпляра или метод в диалоге входа в систему для передачи текста, который вы хотите отобразить, и доступа к нему из главного окна, когда диалоговое окно принято, например,

login.py

class Ui_LoginBox(QtWidgets.QDialog):

    ....

    def get_text(self):
        return "test"

mainUi.py

class Ui_MainWindow(QtWidgets.QMainWindow):

    ....

    def open_dialog(self):
        dialog = Ui_LoginBox()
        dialog.setupLogAccUi(dialog)
        result = dialog.exec()
        if result == dialog.Accepted:
            self.printf(dialog.get_text())

    def printf(self, mypstr):
        self.textBrowser.append(mypstr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...