Почему я получаю ошибку? pyqt5 schedule selenium
У меня есть простой код - после нажатия на кнопку "START" открывается браузер с вкладкой "Google".
Еще я попробовал сделать через библиотеку schedule и selenium так, чтоб каждый день в 15:38 браузер открывал еще одну вкладку с "Yahoo". Почему я получаю такую ошибку как:
"self.job_func = functools.partial(job_func, *args, **kwargs) TypeError: the first argument must be callable" ?
Сам код:
from PyQt5 import QtCore, QtGui, QtWidgets
import schedule
from selenium import webdriver
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(417, 171)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(80, 30, 271, 111))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "START"))
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.Browser)
def Browser(self):
button = self.sender()
if button.text() == 'START':
self.pushButton.setText("STOP")
browser = webdriver.Chrome("C:/python/chromedriver.exe")
browser.get('https://google.com')
schedule.every().day.at("15:38").do(browser.execute_script("window.open('https://www.yahoo.com')"))
else:
close()
self.pushButton.setText("START")
if __name__=="__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle('Fusion')
window = ExampleApp()
window.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я не знаю зачем вам дополнительные библиотеки ?
Попробуйте решение вашей задачи на чистом PyQt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
class Dialog(QDialog):
def __init__(self, url):
super().__init__()
self.browser = QWebEngineView()
self.browser.load(QtCore.QUrl(url))
self.browser.show()
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(417, 171)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(80, 30, 271, 111))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "START"))
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.urlStart = 'http://www.google.com'
self.pushButton.clicked.connect(self.on_off_browser)
self.g, self.y = None, None
self.label = QLabel()
self.lineEdit = QLineEdit()
self.lineEdit.setPlaceholderText('Введите время открытия "Yahoo" в формате "чч:мм:сс"')
layout = QVBoxLayout(self.centralwidget)
layout.addWidget(self.label)
layout.addWidget(self.lineEdit)
layout.addWidget(self.pushButton)
self.timer = QtCore.QTimer(self)
self.timer.setInterval(1000)
self.timer.timeout.connect(self.read_data_from_sensor)
self.timer.start()
def on_off_browser(self):
if self.pushButton.text() == 'START':
self.pushButton.setText("STOP")
self.g = Dialog(self.urlStart)
else:
self.g.browser.hide()
self.pushButton.setText("START")
@QtCore.pyqtSlot()
def read_data_from_sensor(self):
currentTime = QtCore.QDateTime.currentDateTime().toString('hh:mm:ss')
self.label.setText(currentTime)
self.label.adjustSize()
if currentTime == self.lineEdit.text(): # 15:38:00
self.y = Dialog('https://www.yahoo.com')
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Windows Close',
'Are you sure you want to close the windows?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
if self.g: self.g.browser.hide()
if self.y: self.y.browser.hide()
event.accept()
else:
event.ignore()
if __name__=="__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle('Fusion')
window = ExampleApp()
window.show()
sys.exit(app.exec_())
