Advertisement
Guest User

main.py

a guest
Feb 21st, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.51 KB | None | 0 0
  1. from PyQt5.QtCore import pyqtSlot, QRegExp
  2. from PyQt5.QtGui import QFont, QRegExpValidator
  3. from PyQt5.QtWidgets import (QApplication,
  4.                              QDialog,
  5.                              QLineEdit,
  6.                              QMessageBox,
  7.                              QGridLayout,
  8.                              QListWidget)
  9. from PyQt5.QtWidgets import QPushButton
  10. import sys
  11. import db_config
  12. from datetime import datetime
  13.  
  14. class Window(QDialog):
  15.  
  16.     def __init__(self):
  17.         super().__init__()
  18.         self.setWindowTitle('miko learns PyQt5')
  19.         self.setGeometry(100, 200, 400, 400)
  20.  
  21.         self.status_bar = QListWidget()
  22.         self.status_bar.setFont(QFont('Fira Code'))
  23.         self.status_bar.setMaximumHeight(20)
  24.  
  25.         self.q_grid = QGridLayout()
  26.         self.q_grid.addWidget(self.status_bar)
  27.         self.add_fields()
  28.         self.add_buttons()
  29.  
  30.         self.list_widget = QListWidget()
  31.         self.list_widget.setFont(QFont('Fira Code'))
  32.         self.q_grid.addWidget(self.list_widget)
  33.         self.window().setLayout(self.q_grid)
  34.         self.show()
  35.  
  36.     def add_buttons(self):
  37.         self.connect_button = QPushButton('Connect', self)
  38.         self.connect_button.clicked.connect(self.connect_db)
  39.         self.connect_button.move(-5, 50)
  40.  
  41.         self.disconnect_button = QPushButton('Disconnect', self)
  42.         self.disconnect_button.clicked.connect(self.disconnect_db)
  43.         self.disconnect_button.move(80, 50)
  44.  
  45.         self.q_grid.addWidget(self.connect_button)
  46.         self.q_grid.addWidget(self.disconnect_button)
  47.  
  48.     def add_fields(self):
  49.         self.host_textbox = QLineEdit(self)
  50.         self.host_textbox.setPlaceholderText('host')
  51.         self.host_textbox.setValidator(QRegExpValidator(QRegExp('[a-zA-Z0-9]{,40}')))
  52.  
  53.         self.database_textbox = QLineEdit(self)
  54.         self.database_textbox.move(0, 25)
  55.         self.database_textbox.setPlaceholderText('database')
  56.         self.database_textbox.setValidator(QRegExpValidator(QRegExp('[a-zA-Z0-9_]{,40}')))
  57.  
  58.         self.q_grid.addWidget(self.host_textbox)
  59.         self.q_grid.addWidget(self.database_textbox)
  60.  
  61.     @pyqtSlot()
  62.     def disconnect_db(self):
  63.         db_config.disconnect()
  64.         self.list_widget.addItem(f'Disconnected from {db_config.database} at {datetime.now().time().strftime("%X")}. Version=8.0.19 ')
  65.         self.status_bar.clear()
  66.         self.status_bar.addItem(f'Disconnected from {db_config.database}')
  67.         QMessageBox.about(self, 'Connection closed', 'Connection closed')
  68.  
  69.     @pyqtSlot()
  70.     def connect_db(self):
  71.         new_conn_data = dict()
  72.         new_conn_data['host'] = self.host_textbox.text()
  73.         new_conn_data['db'] = self.database_textbox.text()
  74.         is_connected = db_config.reconnect(new_conn_data)
  75.         if not is_connected:
  76.             self.list_widget.addItem(f'Failed to connect to {db_config.database} at {datetime.now().time().strftime("%X")}. Version=8.0.19')
  77.             QMessageBox.warning(self, 'Connection error', '<span style="color: red;">Invalid data</span>')
  78.         elif new_conn_data['db'] and new_conn_data['host']:
  79.             self.list_widget.addItem(f'Connected to {db_config.database} at {datetime.now().time().strftime("%X")}. Version=8.0.19')
  80.             self.status_bar.clear()
  81.             self.status_bar.addItem(f'Connected to {db_config.database}')
  82.             QMessageBox.about(self, 'Successful connection', f'Connected to <span style="color: green;">{self.database_textbox.text()}</span>')
  83.  
  84.  
  85. if __name__ == '__main__':
  86.     App = QApplication(sys.argv)
  87.     window = Window()
  88.     sys.exit(App.exec())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement