Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5.QtCore import pyqtSlot, QRegExp
- from PyQt5.QtGui import QFont, QRegExpValidator
- from PyQt5.QtWidgets import (QApplication,
- QDialog,
- QLineEdit,
- QMessageBox,
- QGridLayout,
- QListWidget)
- from PyQt5.QtWidgets import QPushButton
- import sys
- import db_config
- from datetime import datetime
- class Window(QDialog):
- def __init__(self):
- super().__init__()
- self.setWindowTitle('miko learns PyQt5')
- self.setGeometry(100, 200, 400, 400)
- self.status_bar = QListWidget()
- self.status_bar.setFont(QFont('Fira Code'))
- self.status_bar.setMaximumHeight(20)
- self.q_grid = QGridLayout()
- self.q_grid.addWidget(self.status_bar)
- self.add_fields()
- self.add_buttons()
- self.list_widget = QListWidget()
- self.list_widget.setFont(QFont('Fira Code'))
- self.q_grid.addWidget(self.list_widget)
- self.window().setLayout(self.q_grid)
- self.show()
- def add_buttons(self):
- self.connect_button = QPushButton('Connect', self)
- self.connect_button.clicked.connect(self.connect_db)
- self.connect_button.move(-5, 50)
- self.disconnect_button = QPushButton('Disconnect', self)
- self.disconnect_button.clicked.connect(self.disconnect_db)
- self.disconnect_button.move(80, 50)
- self.q_grid.addWidget(self.connect_button)
- self.q_grid.addWidget(self.disconnect_button)
- def add_fields(self):
- self.host_textbox = QLineEdit(self)
- self.host_textbox.setPlaceholderText('host')
- self.host_textbox.setValidator(QRegExpValidator(QRegExp('[a-zA-Z0-9]{,40}')))
- self.database_textbox = QLineEdit(self)
- self.database_textbox.move(0, 25)
- self.database_textbox.setPlaceholderText('database')
- self.database_textbox.setValidator(QRegExpValidator(QRegExp('[a-zA-Z0-9_]{,40}')))
- self.q_grid.addWidget(self.host_textbox)
- self.q_grid.addWidget(self.database_textbox)
- @pyqtSlot()
- def disconnect_db(self):
- db_config.disconnect()
- self.list_widget.addItem(f'Disconnected from {db_config.database} at {datetime.now().time().strftime("%X")}. Version=8.0.19 ')
- self.status_bar.clear()
- self.status_bar.addItem(f'Disconnected from {db_config.database}')
- QMessageBox.about(self, 'Connection closed', 'Connection closed')
- @pyqtSlot()
- def connect_db(self):
- new_conn_data = dict()
- new_conn_data['host'] = self.host_textbox.text()
- new_conn_data['db'] = self.database_textbox.text()
- is_connected = db_config.reconnect(new_conn_data)
- if not is_connected:
- self.list_widget.addItem(f'Failed to connect to {db_config.database} at {datetime.now().time().strftime("%X")}. Version=8.0.19')
- QMessageBox.warning(self, 'Connection error', '<span style="color: red;">Invalid data</span>')
- elif new_conn_data['db'] and new_conn_data['host']:
- self.list_widget.addItem(f'Connected to {db_config.database} at {datetime.now().time().strftime("%X")}. Version=8.0.19')
- self.status_bar.clear()
- self.status_bar.addItem(f'Connected to {db_config.database}')
- QMessageBox.about(self, 'Successful connection', f'Connected to <span style="color: green;">{self.database_textbox.text()}</span>')
- if __name__ == '__main__':
- App = QApplication(sys.argv)
- window = Window()
- sys.exit(App.exec())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement