Написал код приложения, которое мониторит курс рубля к Тенге, состоящее из 2 файлов.
tng.py:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QPushButton, QVBoxLayout,
QHBoxLayout, QApplication,
QWidget,QPushButton, QLabel, QVBoxLayout)
from PyQt5.QtGui import QFont
from pars import *
def pril(adr):
class Kurz(QWidget):
def __init__(self):
super().__init__()
self.set_appear()
self.adr = adr
self.initUI()
self.show()
self.server = Server(self.adr)
self.setting()
def set_appear(self):
self.setWindowTitle("Отслеживание курса Тенге (RUB/KZT)")
self.setFixedSize(525, 315)
self.setStyleSheet("background-color: rgb(29, 29, 29);")
def initUI(self):
#виджеты
self.adress_lbl = QLabel("Ваш адресс электронной почты: "+self.adr)
self.label = QLabel("1 российский рубль (RUB) равно")
self.now_tng_lbl = QLabel("0.00\nКазахстанский \nтенге")
self.old_tng_lbl = QLabel("Было ранее: \n0.00")
self.comment_lbl = QLabel("Курс стабилен.")
#стилизация
self.adress_lbl.setStyleSheet("font: 9pt \"Bahnschrift SemiLight\";\n"
"color: rgb(255, 255, 255);")
self.label.setStyleSheet("font: 63 13pt \"Bahnschrift SemiBold SemiConden\";\n"
"color: rgb(255, 255, 255);")
self.now_tng_lbl.setStyleSheet("font: 63 17pt \"Bahnschrift SemiBold SemiConden\";\n"
"color: rgb(255, 255, 255);")
self.old_tng_lbl.setStyleSheet("font: 10pt \"Bahnschrift SemiLight\";\n"
"color: rgb(255, 255, 255);")
self.comment_lbl.setStyleSheet("font: 12pt \"Bahnschrift SemiLight\";\n"
"color: rgb(255, 255, 255);")
#лейауты
self.l_line = QVBoxLayout()
self.r_line = QVBoxLayout()
self.h_line = QHBoxLayout()
#добавление виджетов
self.l_line.addWidget(self.adress_lbl, alignment=Qt.AlignLeft)
self.l_line.addWidget(self.label, alignment=Qt.AlignLeft)
self.l_line.addWidget(self.now_tng_lbl, alignment=Qt.AlignLeft)
self.l_line.addWidget(self.comment_lbl, alignment=Qt.AlignLeft)
self.r_line.addWidget(self.old_tng_lbl, alignment=Qt.AlignRight)
#закрепление лейаутов
self.h_line.addLayout(self.l_line)
self.h_line.addLayout(self.r_line)
self.setLayout(self.h_line)
def setting(self):
self.server.check_currency()
self.new = str(self.server.cash)
self.old = str(self.server.current_converted_price)
self.com = self.server.situation
self.adress_lbl.setText("Ваш адресс электронной почты: "+self.adr)
self.now_tng_lbl.setText(self.new+"\nКазахстанский \nтенге")
self.old_tng_lbl.setText("Было ранее: \n"+self.old)
self.comment_lbl.setText(self.com)
print("set")
self.setting()
app = QApplication([])
window1 = Kurz()
app.exec_()
pril("f")
И pars.py:
import requests
from bs4 import BeautifulSoup
import time
import smtplib
class Server:
TENGE_RUB = 'https://www.google.ru/search?q=курс+рубля+к+тенге&newwindow=1&sca_esv=596363404&sxsrf=AM9HkKl-cocS6CYekDrkXuIiE6IwwZXQDQ%3A1704634548790&source=hp&ei=tKiaZemLLs3NwPAPkY-nyAg&iflsig=AO6bgOgAAAAAZZq2xDogfVfFIJkaJK2Pqg3dUcQpe9fH&udm=&oq=курс+рубля+к+тен&gs_lp=Egdnd3Mtd2l6Ih3QutGD0YDRgSDRgNGD0LHQu9GPINC6INGC0LXQvSoCCAAyDRAAGIAEGLEDGEYYggIyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgARIhYcBUJoMWMlucAp4AJABA5gB6QOgAdwjqgEKMS4yMS4yLjEuMrgBAcgBAPgBAagCCsICEBAAGAMYjwEY5QIY6gIYjAPCAhAQLhgDGI8BGOUCGOoCGIwDwgILEC4YgAQYsQMYgwHCAg4QLhiABBixAxjHARjRA8ICCxAAGIAEGLEDGIMBwgIIEAAYgAQYsQPCAhEQLhiABBixAxiDARjHARjRA8ICCBAuGIAEGLEDwgIOEAAYARiABBjJAxgKGCrCAgkQABgBGIAEGArCAgcQABiABBgKwgILEAAYgAQYigUYkgPCAg4QABiABBiKBRixAxiDAcICBBAuGAPCAg4QLhiABBiKBRixAxiDAcICCxAuGIAEGMcBGK8BwgIOEAAYgAQYsQMYgwEYyQPCAggQABiABBiSA8ICDhAAGIAEGLEDGIMBGJIDwgIKEAAYgAQYRhiCAsICDBAAGIAEGAoYRhiCAsICChAAGIAEGAoYsQM&sclient=gws-wiz'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
current_converted_price = 0
difference = 1.2 # разница
def __init__(self, adr):
self.current_converted_price = float(self.get_currency_price().replace(",", "."))
self.adress = adr
print("ready")
def get_currency_price(self):
full_page = requests.get(self.TENGE_RUB, headers=self.headers)
soup = BeautifulSoup(full_page.content, 'html.parser')
convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
return convert[0].text
def check_currency(self):
print("zap")
currency = float(self.get_currency_price().replace(",", "."))
if currency >= self.current_converted_price + self.difference:
print("Курс сильно вырос.")
self.situation = "Курс сильно вырос."
self.send_mail()
elif currency <= self.current_converted_price - self.difference:
print("Курс сильно упал.")
self.situation = "Курс сильно упал."
self.send_mail()
else:
self.situation = "Курс стабилен"
self.cash = currency
print("Сейчас курс: 1 Тенге = " + str(currency))
time.sleep(10) # Засыпание
def send_mail(self):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login('ingener715@gmail.com', 'lpmh bkgh ipqy hqdu')
subject = 'Курс Тенге'
body = self.situation
message = f'Subject: {subject}\n{body}'
server.sendmail(
'ingener715@gmail.com',
self.adress,
message
)
server.quit()
Так же есть 3 файл(начальный) но он вырезан, в первом файле использована функция, которая заменяет его.
При запуске происходит данные о курсе тенге выводятся в консоль, но само приложение не отвечает (белый экран)
Как это можно исправить\оптимизировать?