Не получается получить данные из textEdit.toPlainText()

Не получается получить данные из textEdit. Дебаг показывает пустую строку.

Помогите, пожалуйста. Необходимо получить строку из textEdit и передать ее в

self.pushButton.clicked.connect(partial(self.job, self.text))

import sys
import time
import design
from functools import partial
from PyQt5 import QtWidgets, uic
from selenium import webdriver
from selenium.webdriver.common.by import By


class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.text = self.textEdit.toPlainText()
        print(self.text)
        self.pushButton.clicked.connect(partial(self.job, self.text))

    def job(self, path:str):
        driver = webdriver.Chrome(
            executable_path=r"C:\chromedriver.exe")
        driver.get(path)
        time.sleep(3)
        element = driver.find_element(By.CLASS_NAME, value='button')
        element.click()
        time.sleep(2)


def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
    window = ExampleApp()  # Создаём объект класса ExampleApp
    window.show()  # Показываем окно
    app.exec_()  # и запускаем приложение


if __name__ == '__main__':
    main()


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

Автор решения: S. Nick

Я не могу проверить ваш код.

Почему вы решили использовать виджет QTextEdit? Виджет QLineEdit представляет собой однострочный текстовый редактор.

void QLineEdit::textChanged(const QString &text)

Этот сигнал испускается всякий раз, когда текст изменяется.
text аргумент — это новый текст.

В отличие от textEdited(), этот сигнал также испускается при программном изменении текста, например, вызовом setText().

Нельзя использовать time.sleep(3) в основном потоке - это замораживает интерфейс.

Код может выглядеть примерно так:

import sys
from PyQt5 import QtWidgets, uic
'''
from design import Ui_MainWindow
from selenium import webdriver
from selenium.webdriver.common.by import By
'''


#class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
class ExampleApp(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
#        self.setupUi(self)

        self.centralwidget = QtWidgets.QWidget()
        self.centralwidget.setObjectName("centralwidget")
        self.setCentralWidget(self.centralwidget)
        
#        self.textEdit = QtWidgets.QTextEdit()
        self.text = ''

        self.textEdit = QtWidgets.QLineEdit()
        self.textEdit.textChanged.connect(self.text_changed)              # +++
        
        self.pushButton = QtWidgets.QPushButton('Click me')
#        self.text = self.textEdit.toPlainText()
#        self.pushButton.clicked.connect(partial(self.job, self.text))
        self.pushButton.clicked.connect(self.job)                         # +++
   
        layout = QtWidgets.QVBoxLayout(self.centralwidget)
        layout.addWidget(self.textEdit)
        layout.addWidget(self.pushButton)

    def text_changed(self, text):                                         # +++
        self.text = text                                                  # +++
        print(f'text_changed(self, text): `{self.text}`')

#    def job(self, path:str):
    def job(self):
        path = self.text
        if not self.text:
            return
        print(f'\npath: {path} ----> делайте что-нибудь') #
     
        '''
        driver = webdriver.Chrome(
            executable_path=r"C:\chromedriver.exe")
        driver.get(path)
# ???         time.sleep(3)                                                   
        element = driver.find_element(By.CLASS_NAME, value='button')
        element.click()
# ???         time.sleep(2)
        '''


def main():
    app = QtWidgets.QApplication(sys.argv)  
    window = ExampleApp()                  
    window.show()                          
    app.exec_()                            


if __name__ == '__main__':
    main()

введите сюда описание изображения

→ Ссылка