Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5.Qt import QStyle, QStyleFactory
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.Qt import *
- import pymysql.cursors
- import ctypes
- import datareader
- import sys
- cnx = pymysql.connect(user='root',
- password='1234',
- host='localhost',
- database='normal_db')
- cursor = cnx.cursor()
- # Connector til Normal database
- class Ui_Admin(object):
- # Konstruktor: Indlæser data fra JSON + Rossmann database
- def __init__(self):
- super().__init__()
- datareader.write_to_db()
- self.wallpaper()
- def add_store(self):
- chain = self.lineEdit.text()
- address = self.lineEdit_2.text()
- zip_code = self.lineEdit_3.text()
- city = self.lineEdit_4.text()
- # Henter inputs fra GUIen
- if not chain:
- ctypes.windll.user32.MessageBoxW(0, "Mangler kæde", "Error", 0) # Virker kun på Windows
- elif not address:
- ctypes.windll.user32.MessageBoxW(0, "Mangler adresse", "Error", 0) # Virker kun på Windows
- elif not zip_code:
- ctypes.windll.user32.MessageBoxW(0, "Mangler postnummer", "Error", 0) # Virker kun på Windows
- elif not city:
- ctypes.windll.user32.MessageBoxW(0, "Mangler by", "Error", 0) # Virker kun på Windows
- # Tjekker om der mangler et felt
- else:
- keys = ('SET FOREIGN_KEY_CHECKS = 0')
- cursor.execute(keys) # Fjerner foerign key checks, elimenere eventuelle INSERT problemer.
- sel_address = ('SELECT address from stores where address = %s')
- cursor.execute(sel_address, (address)) # Tjekker om adressen allerede eksisterer i databasen.
- sql_address = cursor.fetchone()
- try:
- insert_city = ('INSERT INTO city VALUES (%s, %s) ON DUPLICATE KEY UPDATE zip_code = zip_code')
- cursor.execute(insert_city, (zip_code, city)) # Indsætter zip_code og city i tabellen city.
- cnx.commit()
- except:
- error = ctypes.windll.user32.MessageBoxW(0, "Postnummer skal være tal", "Error",
- 0) # Virker kun på Windows
- return error # Returnerer fejl hvis zip_code ikke er int. Dataen i den column skal være INT i mysql og giver derfor fejl
- try:
- insert_chain = ('INSERT INTO chain(name) VALUES(%s) ON DUPLICATE KEY UPDATE name=name')
- if sql_address: # Sørger for, at chain ikke bliver indsat, selvom adresse er duplikat
- return self.clear()
- else:
- cursor.execute(insert_chain, (chain)) # Indsætter chain, chain_id er auto_incrementet
- cnx.commit()
- except:
- error1 = ctypes.windll.user32.MessageBoxW(0, "Fejl i tilføjelse af kæde", "Error",
- 0) # Virker kun på Windows
- return error1 # Returnerer fejl, hvis det ikke lykkes. Fungere som en catchall.
- try:
- sel_chain = ('SELECT chain_id from chain where name = %s')
- cursor.execute(sel_chain, (chain)) # Henter chain_id for den relevante kæde.
- new_chain_id = cursor.fetchall()
- except:
- error2 = ctypes.windll.user32.MessageBoxW(0, "SQL fejl", "Error", 0) # Virker kun på Windows
- return error2 # Giver fejl hvis det ikke lykkes, burde aldrig ske.
- if sql_address:
- ctypes.windll.user32.MessageBoxW(0, "Fejl i tilføjelse", "Error", 0) # Virker kun på Windows
- # Hvis sql_adress ikke er None, må adresse allerede findes i databasen og der retuneres derfor en fejl.
- return self.clear()
- else:
- insert = (
- 'INSERT INTO stores (chain_id, address, zip_code) VALUES (%s, %s, %s)')
- cursor.execute(insert, (new_chain_id, address, zip_code))
- cnx.commit() # Sætter den sidste data ind i store.
- ctypes.windll.user32.MessageBoxW(0, "Data tilføjet", "Succes", 0) # Virker kun på Windows
- self.clear()
- def help_button(self):
- ctypes.windll.user32.MessageBoxW(0, """Indtast informationerne i den relevante rubrik, fx Normal til højre for kæde.\n
- For mere information kontakt it-support""", "Hjælp", 0)
- # Knap med system hjælp, virker kun på windows.
- def clear(self):
- self.lineEdit.clear()
- self.lineEdit_2.clear()
- self.lineEdit_3.clear()
- self.lineEdit_4.clear()
- # Nulstiller felterne i GUI'en
- def setupUi(self, Form):
- Form.setFixedSize(319, 300) # Sætter størrelsen på GUI'en, fixedsized gør så man ikke kan trække den større.
- self.verticalLayout = QtWidgets.QVBoxLayout(Form) # Vertikalt layout sætter alt op vertikalt i GUI
- self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
- self.horizontalLayout_2.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
- self.horizontalLayout_2.setSpacing(1) # Horizontal layout sætter det op horizontalt
- self.label = QtWidgets.QLabel(Form) # Label indeholder ikke redigerbar tekst
- self.label.setMaximumSize(QtCore.QSize(16777215, 20))
- font = QtGui.QFont()
- font.setPointSize(10)
- self.label.setFont(font)
- self.label.setAlignment(QtCore.Qt.AlignCenter)
- self.horizontalLayout_2.addWidget(self.label)
- self.verticalLayout.addLayout(self.horizontalLayout_2)
- self.formLayout = QtWidgets.QFormLayout() # Form layout, gør så to ting står ved siden af hinanden i GUI'en
- self.label_2 = QtWidgets.QLabel(Form) # Label se ovenstående
- font = QtGui.QFont()
- font.setPointSize(10)
- self.label_2.setFont(font)
- self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_2) # Tilføjer Widget til formlayout
- self.lineEdit = QtWidgets.QLineEdit(Form) # Line edit er en textbox
- self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.lineEdit)
- self.label_3 = QtWidgets.QLabel(Form)
- font = QtGui.QFont()
- font.setPointSize(10)
- self.label_3.setFont(font) # Label se længere oppe
- self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_3)
- self.lineEdit_2 = QtWidgets.QLineEdit(Form) # Textbox
- self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lineEdit_2)
- self.label_4 = QtWidgets.QLabel(Form)
- font = QtGui.QFont()
- font.setPointSize(10)
- self.label_4.setFont(font)
- self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_4)
- self.lineEdit_3 = QtWidgets.QLineEdit(Form)
- self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.lineEdit_3)
- self.label_5 = QtWidgets.QLabel(Form)
- font = QtGui.QFont()
- font.setPointSize(10)
- self.label_5.setFont(font)
- self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_5)
- self.lineEdit_4 = QtWidgets.QLineEdit(Form)
- self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.lineEdit_4)
- self.verticalLayout.addLayout(self.formLayout)
- self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
- self.pushButton_2 = QtWidgets.QPushButton(Form) # Pushbutton er en knap
- self.pushButton_2.setMaximumSize(QtCore.QSize(80, 80)) # Pushbutton2 er til at tilføje
- self.pushButton_2.setLayoutDirection(QtCore.Qt.LeftToRight)
- self.pushButton_2.setIconSize(QtCore.QSize(6, 12))
- self.horizontalLayout_5.addWidget(self.pushButton_2)
- self.verticalLayout.addLayout(self.horizontalLayout_5)
- self.horizontalLayout = QtWidgets.QHBoxLayout()
- self.pushButton = QtWidgets.QPushButton(Form) # Push button er til "hjælp" knappen.
- self.pushButton.setMaximumSize(QtCore.QSize(60, 16777215))
- self.pushButton.setText("")
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap("question.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.pushButton.setIcon(icon)
- self.pushButton.setIconSize(QtCore.QSize(60, 60))
- self.horizontalLayout.addWidget(self.pushButton)
- self.verticalLayout.addLayout(self.horizontalLayout)
- spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
- self.verticalLayout.addItem(spacerItem) # addItem betyder at den bliver tilføjet til layoutet.
- self.retranslateUi(Form)
- QtCore.QMetaObject.connectSlotsByName(Form)
- self.pushButton_2.clicked.connect(self.add_store)
- self.pushButton.clicked.connect(self.help_button)
- def retranslateUi(self, Form):
- _translate = QtCore.QCoreApplication.translate
- Form.setWindowTitle(_translate("Form", "Indtastning")) # Window titel
- _translate = QtCore.QCoreApplication.translate
- Form.setWindowTitle(_translate("Form", "Indtastning"))
- self.label.setText(_translate("Form", "Tilføj butik"))
- self.label_3.setText(_translate("Form", "Adresse"))
- self.label_2.setText(_translate("Form", "Kæde"))
- self.label_4.setText(_translate("Form", "Postnummer"))
- self.label_5.setText(_translate("Form", "By"))
- self.pushButton_2.setText(_translate("Form", "Tilføj"))
- # Alt teksten til labels og buttons bliver tilføjet her.
- def wallpaper(self):
- o_image = QImage("normal-bg.png")
- s_image = o_image.scaled(QSize(319, 300))
- palette = QPalette()
- palette.setBrush(10, QBrush(s_image))
- qApp.setPalette(palette)
- if __name__ == "__main__":
- app = QtWidgets.QApplication(sys.argv)
- Form = QtWidgets.QWidget()
- app.setStyle("Fusion")
- dark_palette = QPalette()
- dark_palette.setColor(QPalette.Window, QColor(53, 53, 53))
- dark_palette.setColor(QPalette.WindowText, Qt.white)
- dark_palette.setColor(QPalette.Base, QColor(255, 255, 255))
- dark_palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53))
- dark_palette.setColor(QPalette.ToolTipBase, Qt.white)
- dark_palette.setColor(QPalette.ToolTipText, Qt.white)
- dark_palette.setColor(QPalette.Text, Qt.black)
- dark_palette.setColor(QPalette.Button, QColor(255, 255, 255))
- dark_palette.setColor(QPalette.ButtonText, Qt.darkCyan)
- dark_palette.setColor(QPalette.BrightText, Qt.red)
- dark_palette.setColor(QPalette.Link, QColor(42, 130, 218))
- dark_palette.setColor(QPalette.Highlight, QColor(42, 130, 218))
- dark_palette.setColor(QPalette.HighlightedText, Qt.black)
- qApp.setPalette(dark_palette) # Gør GUI'en sort plus ændre udsende på button, textbox osv.
- qApp.setStyleSheet("QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }")
- ui = Ui_Admin()
- ui.setupUi(Form)
- Form.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement