Не получается получить данные из 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 шт):
Я не могу проверить ваш код.
Почему вы решили использовать виджет 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()
