-
Автор темы
- #1
всем привет я не знал что же мне написать интересного , решил написать это приложение с кнопками навигации и тд.
сам код приложения
1 - белое оформление ( только 1 py файл )
2 темное оформление ( 1 py файл и 1 qss )
Заранее извиняюсь за большой размер файлов
сам код приложения
1 - белое оформление ( только 1 py файл )
Код:
import sys
from PyQt5.QtCore import QUrl, QSettings, Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QVBoxLayout, QPushButton, QWidget, QDialog, QLabel, QLineEdit, QDialogButtonBox, QCheckBox, QToolBar
from PyQt5.QtWebEngineWidgets import QWebEngineView
class LoginDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Login')
layout = QVBoxLayout()
self.setLayout(layout)
self.username_input = QLineEdit()
self.password_input = QLineEdit()
self.password_input.setEchoMode(QLineEdit.Password)
self.remember_checkbox = QCheckBox('Запомнить меня')
# Загружаем сохраненные данные, если они есть
settings = QSettings('YouGame', 'Login')
username = settings.value('username')
password = settings.value('password')
remember = settings.value('remember')
if username is not None:
self.username_input.setText(username)
if password is not None:
self.password_input.setText(password)
if remember is not None:
self.remember_checkbox.setChecked(bool(remember))
username_label = QLabel('Username:')
password_label = QLabel('Password:')
layout.addWidget(username_label)
layout.addWidget(self.username_input)
layout.addWidget(password_label)
layout.addWidget(self.password_input)
layout.addWidget(self.remember_checkbox)
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
layout.addWidget(button_box)
button_box.accepted.connect(self.accept)
button_box.rejected.connect(self.reject)
def get_login(self):
return self.username_input.text()
def get_password(self):
return self.password_input.text()
def is_remember_checked(self):
return self.remember_checkbox.isChecked()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('YouGame.biz developer Johv')
self.browser = QWebEngineView()
self.setCentralWidget(self.browser)
self.login_dialog = LoginDialog(self)
self.login_button = QPushButton('Login', self)
self.login_button.clicked.connect(self.on_login_button_clicked)
toolbar = QToolBar(self)
toolbar.addWidget(self.login_button)
self.addToolBar(toolbar)
self.load_login_page()
def load_login_page(self):
self.browser.load(QUrl('https://yougame.biz/login'))
def on_login_button_clicked(self):
self.login_dialog.exec()
def on_load_finished(self, username, password, remember):
self.browser.page().runJavaScript('document.getElementsByName("login")[0].value = "{}";'.format(username))
self.browser.page().runJavaScript('document.getElementsByName("password")[0].value = "{}";'.format(password))
self.browser.page().runJavaScript('document.getElementById("remember").checked = {};'.format(str(bool(remember)).lower()))
self.browser.page().runJavaScript('document.getElementById("submit_button").click();')
def closeEvent(self, event):
# Сохраняем размеры и позицию главного окна
settings = QSettings('YouGame', 'MainWindow')
settings.setValue('size', self.size())
settings.setValue('pos', self.pos())
super().closeEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
# Восстанавливаем размеры и позицию главного окна
settings = QSettings('YouGame', 'MainWindow')
size = settings.value('size')
pos = settings.value('pos')
if size is not None:
main_window.resize(size)
if pos is not None:
main_window.move(pos)
# Если сохраненные данные были запомнены, то автоматически логинимся
if main_window.login_dialog.is_remember_checked():
username = main_window.login_dialog.get_login()
password = main_window.login_dialog.get_password()
remember = True
main_window.on_load_finished(username, password, remember)
sys.exit(app.exec_())
py файл:
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QVBoxLayout, QPushButton, QWidget
from PyQt5.QtWebEngineWidgets import QWebEngineView
class WebBrowser(QMainWindow):
def __init__(self):
super().__init__()
self.browser = QWebEngineView()
self.browser.load(QUrl('https://yougame.biz/'))
self.back_button = QPushButton('Back')
self.forward_button = QPushButton('Forward')
self.reload_button = QPushButton('Reload')
button_layout = QHBoxLayout()
button_layout.addWidget(self.back_button)
button_layout.addWidget(self.forward_button)
button_layout.addWidget(self.reload_button)
vertical_layout = QVBoxLayout()
vertical_layout.addLayout(button_layout)
vertical_layout.addWidget(self.browser)
central_widget = QWidget()
central_widget.setLayout(vertical_layout)
self.setCentralWidget(central_widget)
self.back_button.clicked.connect(self.browser.back)
self.forward_button.clicked.connect(self.browser.forward)
self.reload_button.clicked.connect(self.browser.reload)
self.setWindowTitle('YouGame.biz developer Johv')
self.setGeometry(100, 100, 800, 600)
with open('style.qss', 'r') as f:
self.setStyleSheet(f.read())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = WebBrowser()
window.show()
sys.exit(app.exec_())
style.qss:
QMainWindow {
background-color: #212121;
color: #f5f5f5;
}
QPushButton {
background-color: #484848;
color: #f5f5f5;
border-radius: 5px;
border: 2px solid #f5f5f5;
padding: 5px 10px;
}
QPushButton:hover {
background-color: #585858;
}
QWebEngineView {
background-color: #333333;
color: #f5f5f5;
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Заранее извиняюсь за большой размер файлов
Вложения
-
599.4 KB Просмотры: 191
Последнее редактирование: