i was wondering if it possible using QMessagBox in Qmainwindow.
i am getting this error:
Traceback (most recent call last): File "C:\Users\royqb\desktop\python_learning\softwaremgmt\table.py", line 229, in refresh_warning msg.question(self,'Warning', 'Are you sure to continue?',msg.Yes | msg.No) TypeError: question(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No), defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton): argument 1 has unexpected type 'Ui_MainWindow'
in other window which is Qdialog it works just fine. please help :)
import sqlite3
import smtplib
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtSql import *
from PyQt5.QtGui import *
from newlogin import *
class Ui_MainWindow(object):
# def __init__(self):
# self.connect = sqlite3.connect('lics.db')
# self.cur = self.connect.cursor()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
# MainWindow.resize(1250, 800)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
# self.setWindowTitle('Licenses')
self.new_lic_button = QtWidgets.QPushButton(self.centralwidget)
self.new_lic_button.setGeometry(QtCore.QRect(10, 80, 150, 40))
self.new_lic_button.setStyleSheet("QPushButton#new_lic_button{\n"
"background-color:lightgrey;\n"
"border-radius:5px;\n"
"color:grey;\n"
"border:1px solid darkgrey;\n"
"}\n"
"QPushButton#new_lic_button:pressed{\n"
"background-color:rgba(148, 151, 150, 0.8);\n"
"}\n"
"QPushButton#new_lic_button:hover{\n"
"background-color:rgba(223, 223, 223, 0.8);\n"
"color:rgba(89, 93, 92, 0.8);\n"
"}\n"
"")
self.new_lic_button.setObjectName("ref_data")
self.send_mail_button = QtWidgets.QPushButton(self.centralwidget)
self.send_mail_button.setGeometry(QtCore.QRect(170, 80, 150, 40))
self.send_mail_button.setStyleSheet("QPushButton#send_mail_button{\n"
"background-color:lightgrey;\n"
"border-radius:5px;\n"
"color:grey;\n"
"border:1px solid darkgrey;\n"
"}\n"
"QPushButton#send_mail_button:pressed{\n"
"background-color:rgba(148, 151, 150, 0.8);\n"
"}\n"
"QPushButton#send_mail_button:hover{\n"
"background-color:rgba(223, 223, 223, 0.8);\n"
"color:rgba(89, 93, 92, 0.8);\n"
"}\n"
"")
self.send_mail_button.setObjectName("sub_change")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(10, 150, 1700, 900))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tableWidget.sizePolicy().hasHeightForWidth())
self.tableWidget.setSizePolicy(sizePolicy)
self.tableWidget.setStyleSheet("background-color:rgba(246, 246, 246, 0.8)")
self.tableWidget.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.tableWidget.setFrameShadow(QtWidgets.QFrame.Sunken)
self.tableWidget.setLineWidth(1)
self.tableWidget.setWordWrap(True)
self.tableWidget.setRowCount(0)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(8)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setBackground(QtGui.QColor(230, 230, 230))
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setBackground(QtGui.QColor(230, 230, 230))
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setBackground(QtGui.QColor(230, 230, 230))
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setBackground(QtGui.QColor(230, 230, 230))
self.tableWidget.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setBackground(QtGui.QColor(230, 230, 230))
self.tableWidget.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
item.setBackground(QtGui.QColor(230, 230, 230))
self.tableWidget.setHorizontalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
self.tableWidget.setHorizontalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
item.setFont(font)
self.tableWidget.setHorizontalHeaderItem(7, item)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(750, 10, 280, 51))
font = QtGui.QFont()
font.setFamily("Segoe script")
font.setPointSize(10)
self.label.setFont(font)
self.label.setStyleSheet("text-size:20px;")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 0, 1920, 1000))
self.widget.setStyleSheet("border-radius:20px;\n"
"background-color:rgb(187, 247, 228,0.8);")
self.widget.setObjectName("widget")
self.widget.raise_()
self.new_lic_button.raise_()
self.send_mail_button.raise_()
self.tableWidget.raise_()
self.label.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1016, 22))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
self.menuEfit = QtWidgets.QMenu(self.menubar)
self.menuEfit.setObjectName("menuEfit")
MainWindow.setMenuBar(self.menubar)
self.toolBar = QtWidgets.QToolBar(MainWindow)
self.toolBar.setObjectName("toolBar")
MainWindow.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolBar)
self.actionShow_All = QtWidgets.QAction(MainWindow)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap("pic/icons/show.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionShow_All.setIcon(icon3)
self.actionShow_All.setObjectName("actionShow_All")
self.actionExport_xlsx = QtWidgets.QAction(MainWindow)
self.actionExport_xlsx.setObjectName("actionExport_xlsx")
self.actionExport_Xlsx = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("pic/icons/xlsx.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionExport_Xlsx.setIcon(icon)
self.actionExport_Xlsx.setObjectName("actionExport_Xlsx")
self.actionEmail = QtWidgets.QAction(MainWindow)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap("pic/icons/mail.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionEmail.setIcon(icon1)
self.actionEmail.setObjectName("actionEmail")
self.actionNew_License = QtWidgets.QAction(MainWindow)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap("pic/icons/plus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionNew_License.setIcon(icon2)
self.actionNew_License.setObjectName("actionNew_License")
self.menuFile.addAction(self.actionExport_xlsx)
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEfit.menuAction())
self.toolBar.addAction(self.actionNew_License)
self.toolBar.addAction(self.actionExport_Xlsx)
self.toolBar.addAction(self.actionEmail)
self.toolBar.addAction(self.actionShow_All)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
#send mail from tool bar
self.actionEmail.triggered.connect(self.send_mail)
#table width
MainWindow.setGeometry(QtCore.QRect(10, 100, 1920, 900))
self.tableWidget.setColumnWidth(0, 180)
self.tableWidget.setColumnWidth(1, 250)
self.tableWidget.setColumnWidth(2, 250)
self.tableWidget.setColumnWidth(3, 100)
self.tableWidget.setColumnWidth(4, 150)
self.tableWidget.setColumnWidth(5, 150)
self.tableWidget.setColumnWidth(6, 100)
self.tableWidget.setColumnWidth(7, 500)
self.tableWidget.setHorizontalHeaderLabels(
['Company', 'License type', 'Supplier', 'Interval', 'Last update', 'Next update', 'Time left'])
self.loaddata()
self.new_lic_button.clicked.connect(self.refresh_warning)
# self.send_mail_button.clicked.connect(self.submit_changes)
def refresh_warning(self):
msg = QMessageBox()
# msg.setWindowTitle(self,"Warning")
# msg.setText(self, 'Any changes you made will be lost!')
msg.question(self,'Warning', 'Are you sure to continue?',msg.Yes | msg.No)
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
msg.exec_()
if self.new_lic_button.clicked:
ask = MainWindow.QMessageBox.question(MainWindow,"If you made changes they will be lost! \nUse 'Submit Changes' button to save your changes, continue?",QMessageBox.Yes|QMessageBox.No)
if ask == QMessageBox.Yes:
self.loaddata()
def loaddata(self):
connect = sqlite3.connect('lics.db')
cur = connect.cursor()
sqlquery = ('select company,lic_name,supplier, frequency,last_update, next_update, time_left, lic_path from licenses WHERE time_left_int < 30 order by time_left_int asc ')
cur.execute(sqlquery)
rows = cur.fetchall()
self.tableWidget.setRowCount(len(rows))
tablerow = 0
for row in cur.execute(sqlquery):
self.tableWidget.setItem(tablerow, 0, QtWidgets.QTableWidgetItem(row[0]))
self.tableWidget.setItem(tablerow, 1, QtWidgets.QTableWidgetItem(row[1]))
self.tableWidget.setItem(tablerow, 2, QtWidgets.QTableWidgetItem(row[2]))
self.tableWidget.setItem(tablerow, 3, QtWidgets.QTableWidgetItem(row[3]))
self.tableWidget.setItem(tablerow, 4, QtWidgets.QTableWidgetItem(row[4]))
self.tableWidget.setItem(tablerow, 5, QtWidgets.QTableWidgetItem(row[5]))
self.tableWidget.setItem(tablerow, 6, QtWidgets.QTableWidgetItem(row[6]))
self.tableWidget.setItem(tablerow, 7, QtWidgets.QTableWidgetItem(row[7]))
tablerow +=1
def send_mail(self):
self.ui2 = Ui_login_page()
user = self.ui2.hashed_user
# print(user)
connect = sqlite3.connect('lics.db')
cur = connect.cursor()
# emailsql = ("select email from users where user = '{}' ".format(user))
# print(emailsql)
smtp_sslobj = smtplib.SMTP_SSL('smtp.gmail.com',465)
smtp_sslobj.ehlo()
# smtp_sslobj.starttls()
sent_from = "pythroy@gmail.com"
# self.to_mail = ""
gmail_user = sent_from
sqlq= ('select email_pass from users where email = "{}" '.format(self.to_mail))
gmail_pass = '1qa1qa1qa'
# cur.execute(sqlq)
# print(gmail_pass)
smtp_sslobj.login(sent_from,gmail_pass)
to = self.to_mail
subject ="Expiring licenses"
body = "hello"
smtp_sslobj.sendmail(sent_from, self.to_mail,"hello" )
smtp_sslobj.close()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.new_lic_button.setText(_translate("MainWindow", "Refresh Data"))
self.send_mail_button.setText(_translate("MainWindow", "Submit Changes"))
self.tableWidget.setSortingEnabled(True)
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Company"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Lic name"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Supplier"))
item = self.tableWidget.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Interval"))
item = self.tableWidget.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "Last update"))
item = self.tableWidget.horizontalHeaderItem(5)
item.setText(_translate("MainWindow", "Next update"))
item = self.tableWidget.horizontalHeaderItem(6)
item.setText(_translate("MainWindow", "Time left"))
item = self.tableWidget.horizontalHeaderItem(7)
item.setText(_translate("MainWindow", "Path"))
self.label.setText(_translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:14pt; font-weight:600; text-decoration: underline;\">Expiring Licenses</span></p></body></html>"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuEfit.setTitle(_translate("MainWindow", "Edit"))
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
self.actionExport_xlsx.setText(_translate("MainWindow", "Export xlsx"))
self.actionExport_Xlsx.setText(_translate("MainWindow", "Export Xlsx"))
self.actionExport_Xlsx.setToolTip(_translate("MainWindow", "Export to xlsx"))
self.actionExport_Xlsx.setStatusTip(_translate("MainWindow", "Export to xlsx"))
self.actionEmail.setText(_translate("MainWindow", "Email"))
self.actionEmail.setToolTip(_translate("MainWindow", "Send mail"))
self.actionEmail.setStatusTip(_translate("MainWindow", "Send mail"))
self.actionNew_License.setText(_translate("MainWindow", "New License"))
self.actionNew_License.setStatusTip(_translate("MainWindow", "Insert new license"))
self.actionNew_License.setWhatsThis(_translate("MainWindow", "New license"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())