0

Trying to make my first Gui in Python and having a hard time. I made something in designer:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_ConfigAssign(object):
    def setupUi(self, ConfigAssign):
        ConfigAssign.setObjectName("ConfigAssign")
        ConfigAssign.resize(750, 479)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("exc.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        ConfigAssign.setWindowIcon(icon)
        ConfigAssign.setAutoFillBackground(False)
        ConfigAssign.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(ConfigAssign)
        self.centralwidget.setObjectName("centralwidget")
        self.formLayout = QtWidgets.QFormLayout(self.centralwidget)
        self.formLayout.setObjectName("formLayout")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(22)
        self.label_2.setFont(font)
        self.label_2.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.label_2.setObjectName("label_2")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_2)
        self.label = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label)
        self.customerlistbox = QtWidgets.QComboBox(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(12)
        self.customerlistbox.setFont(font)
        self.customerlistbox.setMaxVisibleItems(20)
        self.customerlistbox.setObjectName("customerlistbox")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.customerlistbox)
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(12)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3)
        self.ImportMapButton = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(12)
        self.ImportMapButton.setFont(font)
        self.ImportMapButton.setObjectName("ImportMapButton")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.ImportMapButton)
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(12)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_4)
        ConfigAssign.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(ConfigAssign)
        self.statusbar.setObjectName("statusbar")
        ConfigAssign.setStatusBar(self.statusbar)
        self.actionQuit = QtWidgets.QAction(ConfigAssign)
        self.actionQuit.setObjectName("actionQuit")

        self.retranslateUi(ConfigAssign)
        QtCore.QMetaObject.connectSlotsByName(ConfigAssign)

    def retranslateUi(self, ConfigAssign):
        _translate = QtCore.QCoreApplication.translate
        ConfigAssign.setWindowTitle(_translate("ConfigAssign", "Configuration Assignment"))
        self.label_2.setText(_translate("ConfigAssign", "CONFIG ASSIGNMENT"))
        self.label.setText(_translate("ConfigAssign", "Select Client:"))
        self.label_3.setText(_translate("ConfigAssign", "Import CSMConfig Map"))
        self.ImportMapButton.setText(_translate("ConfigAssign", "Browse For Excel File"))
        self.label_4.setText(_translate("ConfigAssign", "Create and Export Dim Assign File"))
        self.actionQuit.setText(_translate("ConfigAssign", "Quit"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    ConfigAssign = QtWidgets.QMainWindow()
    ui = Ui_ConfigAssign()
    ui.setupUi(ConfigAssign)
    ConfigAssign.show()
    sys.exit(app.exec_())

And I'm having a hard time connecting all the widgets to code and make things show up and behave properly.

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
from config_assign_ui import Ui_ConfigAssign
import pyodbc
import pandas as pd

class Main(QtWidgets.QMainWindow):
#class Window(Ui_ConfigAssign):
    def __init__(self):
        Ui_ConfigAssign.__init__(self)
        self.setupUi(self)
        self.combo_list()
        self.ImportMapButton.clicked.connect(lambda: self.import_map())


    def combo_list(self):
        self.customerlistbox.clear()
        conn = pyodbc.connect(
            r'DRIVER={ODBC Driver 13 for SQL Server};'
            r'SERVER=server;'
            r'DATABASE=db;'
            r'Trusted_Connection=yes;'
            )

        querystring = """SELECT CustomerName FROM [table] 
        WHERE Column = 'Active' ORDER BY Column"""

        cursor = conn.cursor()
        cursor.execute(querystring)
        customerlist = []
        # Dump results into a list called customerlist
        customerlist = [row[0] for row in cursor.fetchall()]
        for i in customerlist:
            self.customerlistbox.addItem(str(i))

    def import_map(self):
        name = QtGui.QFileDialog.getOpenFileName(self, "Open CSMConfig Map...", "T:\\Drive\",
                                           "Worksheets (*.xlsx,*.xlsm,*.xlsb,*.xls)")
        file = open(name, 'r')

        with file:
            xl = pd.ExcelFile(file)
            df = xl.parse('Sheet1')


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

I had an earlier version that worked with just the combo box listing out all the customers. As I add more functionality, I am going back to designer to add a piece, reuse pyuic5, then go back to the code and attempt to make it do what I want. The last part with the dialog box hasn't worked yet either. But for now, I can't get the application to start up due to the error in the title of this post.

Any help would be appreciated.

maxutil
  • 195
  • 3
  • 13

1 Answers1

0

Try change the class definition to:

class Main(QtWidgets.QMainWindow, Ui_ConfigAssign):
OmarInCS
  • 77
  • 1
  • 7