PyQt5 MainWindow - Hide Windows Border - python

Hi currently my program looks like this
I want it to look like this
Here is my code:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1000, 690)
MainWindow.setMinimumSize(QtCore.QSize(1000, 690))
MainWindow.setMaximumSize(QtCore.QSize(1000, 690))
MainWindow.setStyleSheet("")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.program_frame = QtWidgets.QFrame(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei UI")
self.program_frame.setFont(font)
self.program_frame.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(33, 36, 41);")
self.program_frame.setFrameShape(QtWidgets.QFrame.NoFrame)
self.program_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.program_frame.setObjectName("program_frame")
self.program_side_frame = QtWidgets.QFrame(self.program_frame)
self.program_side_frame.setGeometry(QtCore.QRect(680, 0, 301, 671))
self.program_side_frame.setStyleSheet("background-color: rgb(39, 42, 47);")
self.program_side_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.program_side_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.program_side_frame.setObjectName("program_side_frame")
self.logged_in_frame = QtWidgets.QFrame(self.program_side_frame)
self.logged_in_frame.setGeometry(QtCore.QRect(-1, 0, 301, 71))
self.logged_in_frame.setStyleSheet("")
self.logged_in_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.logged_in_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.logged_in_frame.setObjectName("logged_in_frame")
self.label_username = QtWidgets.QLabel(self.logged_in_frame)
self.label_username.setGeometry(QtCore.QRect(0, 15, 301, 16))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(11)
font.setBold(True)
font.setWeight(75)
self.label_username.setFont(font)
self.label_username.setStyleSheet("color: rgb(247, 247, 248);\n"
"padding-right: 15px;\n"
"border:none;")
self.label_username.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_username.setObjectName("label_username")
self.label_username_2 = QtWidgets.QLabel(self.logged_in_frame)
self.label_username_2.setGeometry(QtCore.QRect(0, 40, 301, 16))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(11)
font.setBold(True)
font.setWeight(75)
self.label_username_2.setFont(font)
self.label_username_2.setStyleSheet("color: rgb(152, 152, 153);\n"
"padding-right: 15px;\n"
"border: none;")
self.label_username_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_username_2.setObjectName("label_username_2")
self.line = QtWidgets.QFrame(self.program_side_frame)
self.line.setGeometry(QtCore.QRect(0, 70, 301, 1))
self.line.setMinimumSize(QtCore.QSize(0, 0))
self.line.setMaximumSize(QtCore.QSize(16777215, 1))
self.line.setStyleSheet("background-color: rgb(90, 96, 102);")
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.program_top_frame = QtWidgets.QFrame(self.program_frame)
self.program_top_frame.setGeometry(QtCore.QRect(-1, 0, 681, 71))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(12)
self.program_top_frame.setFont(font)
self.program_top_frame.setStyleSheet("")
self.program_top_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.program_top_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.program_top_frame.setObjectName("program_top_frame")
self.btn_maximize = QtWidgets.QPushButton(self.program_top_frame)
self.btn_maximize.setGeometry(QtCore.QRect(610, 30, 21, 21))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.btn_maximize.setFont(font)
self.btn_maximize.setStyleSheet("background-color: rgb(253, 66, 61);\n"
"border: 100%;")
self.btn_maximize.setText("")
self.btn_maximize.setObjectName("btn_maximize")
self.btn_close = QtWidgets.QPushButton(self.program_top_frame)
self.btn_close.setGeometry(QtCore.QRect(640, 30, 21, 21))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.btn_close.setFont(font)
self.btn_close.setStyleSheet("border: 100%;\n"
"background-color: rgb(254, 187, 44);")
self.btn_close.setText("")
self.btn_close.setObjectName("btn_close")
self.btn_minimize = QtWidgets.QPushButton(self.program_top_frame)
self.btn_minimize.setGeometry(QtCore.QRect(580, 30, 21, 21))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.btn_minimize.setFont(font)
self.btn_minimize.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"border: 100%;")
self.btn_minimize.setText("")
self.btn_minimize.setObjectName("btn_minimize")
self.home_btn = QtWidgets.QPushButton(self.program_top_frame)
self.home_btn.setGeometry(QtCore.QRect(80, 30, 60, 21))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.home_btn.setFont(font)
self.home_btn.setStyleSheet("color: rgb(253, 66, 61);")
self.home_btn.setObjectName("home_btn")
self.selectShoe_btn = QtWidgets.QPushButton(self.program_top_frame)
self.selectShoe_btn.setGeometry(QtCore.QRect(160, 30, 71, 21))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.selectShoe_btn.setFont(font)
self.selectShoe_btn.setStyleSheet("color: rgb(172, 172, 174);")
self.selectShoe_btn.setObjectName("selectShoe_btn")
self.startCopping_btn = QtWidgets.QPushButton(self.program_top_frame)
self.startCopping_btn.setGeometry(QtCore.QRect(250, 30, 71, 21))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.startCopping_btn.setFont(font)
self.startCopping_btn.setStyleSheet("color: rgb(172, 172, 174);")
self.startCopping_btn.setObjectName("startCopping_btn")
self.frame = QtWidgets.QFrame(self.program_frame)
self.frame.setGeometry(QtCore.QRect(0, 70, 681, 601))
self.frame.setStyleSheet("\n"
"border-bottom-right-radius: 0px;\n"
"border-top-right-radius: 0px;\n"
"border-top-left-radius: 0px;")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(20, 20, 151, 41))
font = QtGui.QFont()
font.setFamily("Segoe UI Semibold")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);")
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.program_frame)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_username.setText(_translate("MainWindow", "#administrator"))
self.label_username_2.setText(_translate("MainWindow", "Subscriber"))
self.home_btn.setText(_translate("MainWindow", "Home"))
self.selectShoe_btn.setText(_translate("MainWindow", "Settings"))
self.startCopping_btn.setText(_translate("MainWindow", "Help"))
self.label.setText(_translate("MainWindow", "Home Screen"))
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_())
I've googled almost everywhere but the answers i seem to find are mostly for PyQt4.
I manage to find one answer about hiding the title bar and the code looks like this
self.setWindowFlag(Qt.FramelessWindowHint)
But that does not get the result I want. what i get is just the title bar gone but still there's a grey rectangular background to my program.

That white border is the internal margin of the layout so just use setContentsMargins, also for the round border you must use a mask, and obviously the Qt::FramelessWindowHint flag:
from PyQt5.QtCore import QRect, Qt
from PyQt5.QtGui import QRegion
from PyQt5.QtWidgets import QApplication, QMainWindow
from design import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.setWindowFlag(Qt.FramelessWindowHint)
radius = 10
base = self.rect()
ellipse = QRect(0, 0, 2 * radius , 2 * radius)
base_region = QRegion(base.adjusted(radius, 0, -radius, 0))
base_region |= QRegion(base.adjusted(0, radius, 0, -radius))
base_region |= QRegion(ellipse, QRegion.Ellipse)
ellipse.moveTopRight(base.topRight())
base_region |= QRegion(ellipse, QRegion.Ellipse)
ellipse.moveBottomRight(base.bottomRight())
base_region |= QRegion(ellipse, QRegion.Ellipse)
ellipse.moveBottomLeft(base.bottomLeft())
base_region |= QRegion(ellipse, QRegion.Ellipse)
self.setMask(base_region)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Output:

Related

AutoResize Existing Main Window pyqt5

i already designed a QMainWindow with QT Designer contain centralWidget which contain
pushbutton
labels
textEdit
after coding all the project I realized that the mainwindow doesn't fit all PC screens
so I need to auto resize all objects to fit when I try layout vertically or horizontally
all object's positions change
enter image description here
enter image description here
class Ui_MainWindow_login(object):
def setupUi(self, MainWindow_login):
MainWindow_login.setObjectName("MainWindow_login")
MainWindow_login.resize(1121, 901)
MainWindow_login.setStyleSheet("")
self.centralwidget = QtWidgets.QWidget(MainWindow_login)
self.centralwidget.setObjectName("centralwidget")
self.label_login_title = QtWidgets.QLabel(self.centralwidget)
self.label_login_title.setGeometry(QtCore.QRect(230, 30, 621, 71))
font = QtGui.QFont()
font.setFamily("Traditional Arabic")
font.setPointSize(28)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.label_login_title.setFont(font)
self.label_login_title.setObjectName("label_login_title")
self.label_login_UNAME = QtWidgets.QLabel(self.centralwidget)
self.label_login_UNAME.setGeometry(QtCore.QRect(710, 230, 321, 71))
font = QtGui.QFont()
font.setFamily("Traditional Arabic")
font.setPointSize(28)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.label_login_UNAME.setFont(font)
self.label_login_UNAME.setObjectName("label_login_UNAME")
self.label_PASS = QtWidgets.QLabel(self.centralwidget)
self.label_PASS.setGeometry(QtCore.QRect(650, 400, 211, 71))
font = QtGui.QFont()
font.setFamily("Traditional Arabic")
font.setPointSize(28)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
font_text = QtGui.QFont()
font_text.setFamily("Traditional Arabic")
font_text.setPointSize(24)
font_text.setBold(True)
font_text.setItalic(False)
font_text.setWeight(75)
self.label_PASS.setFont(font)
self.label_PASS.setObjectName("label_PASS")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(190, 230, 511, 61))
self.textEdit.setObjectName("textEdit")
self.textEdit.setFont(font_text)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(190, 410, 511, 61))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit.setFont(font_text)
self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Password)
self.pushButton_login = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_login.setGeometry(QtCore.QRect(360, 550, 251, 101))
font = QtGui.QFont()
font.setFamily("Traditional Arabic")
font.setPointSize(22)
font.setBold(True)
font.setWeight(75)
self.pushButton_login.setFont(font)
self.pushButton_login.setObjectName("pushButton_login")
self.pushButton_login.clicked.connect(lambda: self.open_next_page())
MainWindow_login.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow_login)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1121, 21))
self.menubar.setObjectName("menubar")
MainWindow_login.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow_login)
self.statusbar.setObjectName("statusbar")
MainWindow_login.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow_login)
QtCore.QMetaObject.connectSlotsByName(MainWindow_login)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow_login = QtWidgets.QMainWindow()
ui = Ui_MainWindow_login()
ui.setupUi(MainWindow_login)
MainWindow_login.show()
sys.exit(app.exec_())

How do I make Average Mark Calculator in PyQT?

I want to use PyQT to calculate average marks from 1 to 5 (5, 4, 4 = 4,33). It shows me error and why I can't do this. What's the problem?
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(412, 239)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(100, 10, 211, 31))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(20)
font.setItalic(True)
self.label.setFont(font)
self.label.setObjectName("label")
self.one = QtWidgets.QPushButton(Dialog)
self.one.setGeometry(QtCore.QRect(20, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
self.one.setFont(font)
self.one.setStyleSheet("background-color: rgb(255, 170, 0);")
self.one.setObjectName("one")
self.two = QtWidgets.QPushButton(Dialog)
self.two.setGeometry(QtCore.QRect(100, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.two.setFont(font)
self.two.setStyleSheet("background-color: rgb(255, 170, 0);")
self.two.setObjectName("two")
self.three = QtWidgets.QPushButton(Dialog)
self.three.setGeometry(QtCore.QRect(180, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.three.setFont(font)
self.three.setStyleSheet("background-color: rgb(255, 170, 0);")
self.three.setObjectName("three")
self.four = QtWidgets.QPushButton(Dialog)
self.four.setGeometry(QtCore.QRect(260, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.four.setFont(font)
self.four.setStyleSheet("background-color: rgb(255, 170, 0);")
self.four.setObjectName("four")
self.five = QtWidgets.QPushButton(Dialog)
self.five.setGeometry(QtCore.QRect(340, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
self.five.setFont(font)
self.five.setStyleSheet("background-color: rgb(255, 170, 0);")
self.five.setObjectName("five")
self.Marks = QtWidgets.QLabel(Dialog)
self.Marks.setGeometry(QtCore.QRect(10, 50, 391, 31))
font = QtGui.QFont()
font.setFamily("Montserrat Medium")
font.setPointSize(17)
font.setBold(False)
font.setItalic(False)
font.setUnderline(False)
font.setWeight(50)
font.setStrikeOut(False)
font.setKerning(True)
self.Marks.setFont(font)
self.Marks.setText("")
self.Marks.setAlignment(QtCore.Qt.AlignCenter)
self.Marks.setObjectName("Marks")
self.Result = QtWidgets.QLabel(Dialog)
self.Result.setGeometry(QtCore.QRect(140, 100, 131, 31))
font = QtGui.QFont()
font.setFamily("Montserrat Medium")
font.setPointSize(21)
self.Result.setFont(font)
self.Result.setMouseTracking(False)
self.Result.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Result.setText("")
self.Result.setAlignment(QtCore.Qt.AlignCenter)
self.Result.setObjectName("Result")
self.Apply = QtWidgets.QPushButton(Dialog)
self.Apply.setGeometry(QtCore.QRect(130, 200, 75, 23))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(10)
self.Apply.setFont(font)
self.Apply.setObjectName("Apply")
self.Clear = QtWidgets.QPushButton(Dialog)
self.Clear.setGeometry(QtCore.QRect(220, 200, 75, 23))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(10)
self.Clear.setFont(font)
self.Clear.setObjectName("Clear")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
self.add_functions()
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Средний балл"))
self.one.setText(_translate("Dialog", "1"))
self.two.setText(_translate("Dialog", "2"))
self.three.setText(_translate("Dialog", "3"))
self.four.setText(_translate("Dialog", "4"))
self.five.setText(_translate("Dialog", "5"))
self.Apply.setText(_translate("Dialog", "Принять"))
self.Clear.setText(_translate("Dialog", "Очистить"))
def add_functions(self):
self.one.clicked.connect(lambda: self.write_number(self.one.text()))
self.two.clicked.connect(lambda: self.write_number(self.two.text()))
self.three.clicked.connect(lambda: self.write_number(self.three.text()))
self.four.clicked.connect(lambda: self.write_number(self.four.text()))
self.five.clicked.connect(lambda: self.write_number(self.five.text()))
self.Apply.clicked.connect(self.results)
def write_number(self, number):
marks = []
marks.append(number)
self.Marks.setText(self.Marks.text() + number)
def results(self, number, marks):
res = sum(marks) / len(marks)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
I used tkinter before, so I don't know how to make it, because it shows me error:
"TypeError: Ui_Dialog.write_number() missing 1 required positional argument: 'marks'"
First You have to pass arguments to results function
and marks = [] will reset the marks list every time a button is pressed..
so better make marks global variable by self.marks = [] and append integers to it..
so to append numbers to it use self.marks.append(int(number))
and remove the numbers argument from results as it is not necessary
so results function will look like this..
def results(self, marks):
res = sum(marks) / len(marks)
print(res) #or return as your wish
write_number function should look like this
def write_number(self, number):
self.marks.append(int(number))
self.Marks.setText(self.Marks.text() + number)
and declare the self.marks variable after self.add_functions() statement
self.add_functions()
self.marks = []
and change Apply button connect Function
self.Apply.clicked.connect(lambda: self.results(self.marks))
so add_function should look like this..
def add_functions(self):
self.one.clicked.connect(lambda: self.write_number(self.one.text()))
self.two.clicked.connect(lambda: self.write_number(self.two.text()))
self.three.clicked.connect(lambda: self.write_number(self.three.text()))
self.four.clicked.connect(lambda: self.write_number(self.four.text()))
self.five.clicked.connect(lambda: self.write_number(self.five.text()))
self.Apply.clicked.connect(lambda: self.results(self.marks))

How to pass parameters bw two windows in pyqt5?

I am working on a password manager gui app. Using Qtdesigner I created a main window where I asked for username and password from user. and a dialog window where display the user their username and passwords for different apps and websites. I also called that dialog window from my main window so that when user press login button then if their login credential is correct , the dialog window will appear.
Now what I want is that when dialog window appears,after clicking push button it should show all data of the user which is stored in a table with that username(like if username is alex then a table with name alex is there in db with username and passwords of different apps/websites).
Hope my question is understandable enough to be answered. I can further clarify if anyone interested to answer.
MY mainwindow file------>
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import sqlite3
from main2 import Ui_Dialog
class Ui_MainWindow(object):
def openwindow(self):
self.window = QtWidgets.QMainWindow()
self.ui = Ui_Dialog()
self.ui.setupUi(self.window)
self.window.show()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(553, 400)
MainWindow.setMinimumSize(QtCore.QSize(553, 400))
MainWindow.setMaximumSize(QtCore.QSize(553, 400))
MainWindow.setAutoFillBackground(False)
MainWindow.setStyleSheet("background-color:\"PowderBlue\"")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(-1, -5, 561, 61))
font = QtGui.QFont()
font.setFamily("Dosis ExtraBold")
font.setPointSize(30)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(87, 8, 97);")
self.label.setFrameShape(QtWidgets.QFrame.NoFrame)
self.label.setFrameShadow(QtWidgets.QFrame.Plain)
self.label.setLineWidth(7)
self.label.setObjectName("label")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(28, 120, 511, 261))
self.frame.setStyleSheet("background-color: rgb(176, 224, 230);\n"
"")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.username = QtWidgets.QLineEdit(self.frame)
self.username.setGeometry(QtCore.QRect(224, 0, 261, 41))
font = QtGui.QFont()
font.setFamily("Segoe Print")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.username.setFont(font)
self.username.setStyleSheet("border :2px solid purple ;\n"
"background-color:PowderBlue;\n"
"border-radius:5px;\n"
"\n"
"\n"
"\n"
"")
self.username.setText("")
self.username.setEchoMode(QtWidgets.QLineEdit.Normal)
self.username.setPlaceholderText("master user")
self.username.setClearButtonEnabled(False)
self.username.setObjectName("username")
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(442, 7, 41, 31))
self.label_2.setStyleSheet("image: url(:/user.png);\n"
"background-color:PowderBlue")
self.label_2.setText("")
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.frame)
self.label_3.setGeometry(QtCore.QRect(450, 69, 31, 31))
self.label_3.setAutoFillBackground(False)
self.label_3.setStyleSheet("image: url(:/key.png);\n"
"background-color:PowderBlue")
self.label_3.setText("")
self.label_3.setObjectName("label_3")
self.password = QtWidgets.QLineEdit(self.frame)
self.password.setGeometry(QtCore.QRect(225, 65, 261, 41))
font = QtGui.QFont()
font.setFamily("Segoe Print")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.password.setFont(font)
self.password.setPlaceholderText("master password")
self.password.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
self.password.setStyleSheet("border :2px solid purple ;\n"
"border-radius:5px;")
self.password.setText("")
self.password.setEchoMode(QtWidgets.QLineEdit.Password)
self.password.setPlaceholderText("")
self.password.setClearButtonEnabled(True)
self.password.setObjectName("password")
self.login_button = QtWidgets.QPushButton(self.frame,clicked=lambda:self.log_in())
self.login_button.setGeometry(QtCore.QRect(280, 130, 41, 31))
font = QtGui.QFont()
font.setFamily("Comic Sans MS")
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.login_button.setFont(font)
self.login_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.login_button.setAcceptDrops(True)
self.login_button.setAutoFillBackground(False)
self.login_button.setStyleSheet("image: url(:/login.png);")
self.login_button.setText("")
self.login_button.setFlat(True)
self.login_button.setObjectName("login_button")
self.signup_button = QtWidgets.QPushButton(self.frame,clicked=lambda:self.sign_up())
self.signup_button.setGeometry(QtCore.QRect(388, 130, 41, 31))
self.signup_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.signup_button.setMouseTracking(False)
self.signup_button.setAcceptDrops(True)
self.signup_button.setAutoFillBackground(False)
self.signup_button.setStyleSheet("image: url(:/user (2).png);")
self.signup_button.setText("")
self.signup_button.setFlat(True)
self.signup_button.setObjectName("signup_button")
self.label_4 = QtWidgets.QLabel(self.frame)
self.label_4.setGeometry(QtCore.QRect(25, 7, 141, 141))
self.label_4.setStyleSheet("image: url(:/team.png);")
self.label_4.setText("")
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.frame)
self.label_5.setGeometry(QtCore.QRect(17, 135, 171, 41))
font = QtGui.QFont()
font.setFamily("Forte")
font.setPointSize(22)
font.setBold(False)
font.setWeight(50)
self.label_5.setFont(font)
self.label_5.setStyleSheet("color: rgb(5, 22, 127);")
self.label_5.setFrameShape(QtWidgets.QFrame.NoFrame)
self.label_5.setFrameShadow(QtWidgets.QFrame.Plain)
self.label_5.setLineWidth(7)
self.label_5.setObjectName("label_5")
self.error_lbl = QtWidgets.QLabel(self.frame)
self.error_lbl.setGeometry(QtCore.QRect(230,165,251,50))
#self.error_lbl.textFormat.RichText()
font = QtGui.QFont()
font.setFamily("Roboto Black")
font.setPointSize(11)
font.setBold(True)
font.setWeight(65)
self.error_lbl.setFont(font)
self.error_lbl.setStyleSheet("color: rgb(255,0,0);")
self.error_lbl.setFrameShape(QtWidgets.QFrame.NoFrame)
self.error_lbl.setFrameShadow(QtWidgets.QFrame.Plain)
self.error_lbl.setLineWidth(1)
self.error_lbl.setObjectName("error_lbl")
self.line_2 = QtWidgets.QFrame(self.frame)
self.line_2.setGeometry(QtCore.QRect(-17, 190, 20, 61))
self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.line_5 = QtWidgets.QFrame(self.frame)
self.line_5.setGeometry(QtCore.QRect(520, -20, 20, 221))
self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_5.setObjectName("line_5")
self.label_6 = QtWidgets.QLabel(self.frame)
self.label_6.setGeometry(QtCore.QRect(349, 231, 41, 31))
self.label_6.setStyleSheet("image: url(:/copyright.png);")
self.label_6.setText("")
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(self.frame)
self.label_7.setGeometry(QtCore.QRect(380, 234, 111, 20))
font = QtGui.QFont()
font.setFamily("Comic Sans MS")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.password.raise_()
self.username.raise_()
self.label_2.raise_()
self.label_3.raise_()
self.login_button.raise_()
self.signup_button.raise_()
self.label_4.raise_()
self.label_5.raise_()
self.error_lbl.raise_()
self.line_2.raise_()
self.line_5.raise_()
self.label_6.raise_()
self.label_7.raise_()
self.info_button = QtWidgets.QPushButton(self.centralwidget)
self.info_button.setGeometry(QtCore.QRect(510, 0, 41, 23))
self.info_button.setStyleSheet("image: url(:/information-button.png);")
self.info_button.setText("")
self.info_button.setFlat(True)
self.info_button.setObjectName("info_button")
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setGeometry(QtCore.QRect(9, 101, 20, 271))
self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.line_6 = QtWidgets.QFrame(self.centralwidget)
self.line_6.setGeometry(QtCore.QRect(520, 101, 21, 271))
self.line_6.setFrameShape(QtWidgets.QFrame.VLine)
self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_6.setObjectName("line_6")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(334, 0, 81, 61))
self.label_8.setStyleSheet("image: url(:/password.png);")
self.label_8.setText("")
self.label_8.setObjectName("label_8")
self.line_8 = QtWidgets.QFrame(self.centralwidget)
self.line_8.setGeometry(QtCore.QRect(19, 90, 511, 20))
self.line_8.setFrameShape(QtWidgets.QFrame.HLine)
self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_8.setObjectName("line_8")
self.line_4 = QtWidgets.QFrame(self.centralwidget)
self.line_4.setGeometry(QtCore.QRect(19, 364, 361, 16))
self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_4.setObjectName("line_4")
self.line_7 = QtWidgets.QFrame(self.centralwidget)
self.line_7.setGeometry(QtCore.QRect(513, 364, 16, 16))
self.line_7.setFrameShape(QtWidgets.QFrame.HLine)
self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_7.setObjectName("line_7")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 553, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def log_in(self):
conn = sqlite3.connect("master.db")
cur = conn.cursor()
user = self.username.text()
password = self.password.text()
print(user)
print(password)
if user=="" or password=="" :
self.error_lbl.setText( "materuser & masterpassword\nrequired !")
else:
cur.execute("SELECT rowid , *FROM master_database WHERE master_users = ?", (user,))
c=cur.fetchone()
conn.commit()
conn.close()
if c==None:
self.error_lbl.setText( f"No data for {user}\nKindly register for new user !" )
else:
if c[2] == password:
#self.error_lbl.setText("Successfully verified.\nClick to Login")
self.window = QtWidgets.QMainWindow()
self.ui = Ui_Dialog()
self.ui.setupUi(self.window)
self.window.show()
else:
self.error_lbl.setText("Incorrect Password !" )
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_())
My Dialog window file------->'
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main2.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import sqlite3
class Ui_Dialog(object):
def loaddata(self):
connection = sqlite3.connect('master.db')
query = "SELECT * FROM a"
c = connection.execute(query)
self.tableWidget.setRowCount(0)
for row_number , row_data in enumerate(c):
self.tableWidget.insertRow(row_number)
for column_number ,data in enumerate(row_data):
self.tableWidget.setItem(row_number,column_number,QtWidgets.QTableWidgetItem(str(data)))
connection.commit()
connection.close()
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(553, 424)
font = QtGui.QFont()
font.setFamily("Consolas")
Dialog.setFont(font)
Dialog.setStyleSheet("background-color: PowderBlue;bn ")
self.label_4 = QtWidgets.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(36, 112, 151, 31))
font = QtGui.QFont()
font.setFamily("Raleway Black")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(Dialog)
self.label_5.setGeometry(QtCore.QRect(225, 112, 111, 31))
font = QtGui.QFont()
font.setFamily("Raleway Black")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(Dialog)
self.label_6.setGeometry(QtCore.QRect(396, 112, 121, 31))
font = QtGui.QFont()
font.setFamily("Raleway Black")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.tableWidget = QtWidgets.QTableWidget(Dialog)
self.tableWidget.setGeometry(QtCore.QRect(10, 150, 531, 271))
self.tableWidget.setMinimumSize(QtCore.QSize(531, 271))
self.tableWidget.setMaximumSize(QtCore.QSize(531, 271))
font = QtGui.QFont()
font.setFamily("Source Sans Pro SemiBold")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.tableWidget.setFont(font)
self.tableWidget.setStyleSheet("color: rgb(73, 6, 127);")
self.tableWidget.setFrameShape(QtWidgets.QFrame.Box)
self.tableWidget.setGridStyle(QtCore.Qt.NoPen)
self.tableWidget.setRowCount(10)
self.tableWidget.setColumnCount(3)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.horizontalHeader().setDefaultSectionSize(177)
self.pushButton = QtWidgets.QPushButton(Dialog,clicked=lambda:self.loaddata())
self.pushButton.setGeometry(QtCore.QRect(200, 30, 75, 23))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label_4.setText(_translate("Dialog", "APP/WEBSITE"))
self.label_5.setText(_translate("Dialog", "USERNAME"))
self.label_6.setText(_translate("Dialog", "PASSWORD"))
self.pushButton.setText(_translate("Dialog", "PushButton"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
I use the QStackedWidget to switch between pages.
app = QApplication(sys.argv)
stackedwidget = QtWidgets.QStackedWidget()
page1 = PageOneClass()
page2 = PageTwoClass()
stackedwidget.addWidget(page1)
stackedwidget.addWidget(page2)
stackedwidget.show()
app.exec_()
This will let you switch between pages without running another file. Now to get values from one page to another, use inheritance.
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.user = self.username.text()
self password = self.password.text() #Now the user, password can be accessed using the class name. dont forget to add self.
class DialogWindow(MainWindow):
def __init__(self, MainWindow):
super(DialogWindow, self).__init__()
usernamefrompage1 = MainWindow.user
passwordfrompage1 = MainWindow.password
app = QApplication(sys.argv)
stackedwidget = QtWidgets.QStackedWidget()
mainwindow_instance = MainWindow()
dialogwindow_instance = DialogWindow(mainwindow_instance)
#we are passing the mainwindow instance to the dialog window instance, this will let us use all the methods and attributes of the mainwindow.
stackedwidget.addWidget(mainwindow_instance)
stackedwidget.addWidget(dialogwindow_instance)
stackedwidget.setCurrentWidget(mainwindow_instance)
stackedwidget.show()
app.exec_()

PYQT5: How to link the 3 pushbottons with 3 .py

How to use pyqtSlot to connect the QMainWindow with 3 QtWidgets?
I wanna to use 3 buttons to switch 3 screen for each .py files.
The UiPE.py file for the 3 pushbutton to switch 3 screens of .py file.
#=============
**UiPE.py**
#=============
# -*- coding: utf-8 -*-
"""
Module implementing PB01.
"""
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
from Ui_UiPE import Ui_MainWindow
class PB01(QMainWindow, Ui_MainWindow):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor
#param parent reference to the parent widget
#type QWidget
"""
super(PB01, self).__init__(parent)
self.setupUi(self)
#pyqtSlot()
def on_PBtn1PE_clicked(self):
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
#raise NotImplementedError
#pyqtSlot()
def on_PBtn2LC_clicked(self):
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
raise NotImplementedError
#pyqtSlot()
def on_PBtn3PP_clicked(self):
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
raise NotImplementedError
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
FormPE = QtWidgets.QWidget()
ui = Ui_FormPE()
ui.setupUi(FormPE)
FormPE.show()
sys.exit(app.exec_())
Ui_UiPE.py
#=============
**Ui_UiPE.py**
#=============
# -*- coding: utf-8 -*-
/*Form implementation generated from reading ui file
'..\PyQt5\eee\UiPE.ui'*/
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(960, 736)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setStyleSheet("border-image:\
url(:/ME/images/Main.jpg);")
self.centralWidget.setObjectName("centralWidget")
self.frame = QtWidgets.QFrame(self.centralWidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 960, 500))
self.frame.setAutoFillBackground(False)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.PBtn1PE = QtWidgets.QPushButton(self.frame)
self.PBtn1PE.setEnabled(True)
self.PBtn1PE.setGeometry(QtCore.QRect(150, 400, 150, 50))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(False)
font.setWeight(50)
self.PBtn1PE.setFont(font)
self.PBtn1PE.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: \
red;border-image: url();")
self.PBtn1PE.setText("PE")
self.PBtn1PE.setDefault(False)
self.PBtn1PE.setObjectName("PBtn1PE")
self.PBtn2LC = QtWidgets.QPushButton(self.frame)
self.PBtn2LC.setGeometry(QtCore.QRect(400, 400, 150, 50))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(False)
font.setWeight(50)
self.PBtn2LC.setFont(font)
self.PBtn2LC.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: \
yellow;border-image: url();")
self.PBtn2LC.setObjectName("PBtn2LC")
self.PBtn3PP = QtWidgets.QPushButton(self.frame)
self.PBtn3PP.setGeometry(QtCore.QRect(650, 400, 150, 50))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(False)
font.setWeight(50)
self.PBtn3PP.setFont(font)
self.PBtn3PP.setAutoFillBackground(False)
self.PBtn3PP.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: \
rgb(0, 162, 232);;border-image: url();")
self.PBtn3PP.setObjectName("PBtn3PP")
self.BtnClose = QtWidgets.QPushButton(self.frame)
self.BtnClose.setGeometry(QtCore.QRect(860, 40, 81, 41))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.BtnClose.setFont(font)
self.BtnClose.setWhatsThis("")
self.BtnClose.setAccessibleName("")
self.BtnClose.setAutoFillBackground(False)
self.BtnClose.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: red;\
border-image: url();")
self.BtnClose.setText("Exit")
self.BtnClose.setObjectName("BtnClose")
MainWindow.setCentralWidget(self.centralWidget)
self.retranslateUi(MainWindow)
self.PBtn1PE.released.connect(MainWindow.show)
self.BtnClose.clicked.connect(self.frame.close)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
MainWindow.setTabOrder(self.PBtn1PE, self.PBtn2LC)
MainWindow.setTabOrder(self.PBtn2LC, self.PBtn3PP)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.PBtn2LC.setText(_translate("MainWindow", "LC"))
self.PBtn3PP.setText(_translate("MainWindow", "PP"))
#import MainE_rc
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_())
Ui_UiPE1.py
/*=============
#**Ui_UiPE1.py**, **Ui_UiLC.py** and **Ui_UiPP.py** is same script for
#differet function.
=============*/
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file \
#'C:\Users\ST3C_01\PyQt5\eee\UiPE1.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_FormPE(object):
def setupUi(self, FormPE):
FormPE.setObjectName("FormPE")
FormPE.resize(960, 500)
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
FormPE.setFont(font)
FormPE.setStyleSheet("border-image:\
url(:/myframe/images/PresidentElection.jpg);")
self.PEBtn1B = QtWidgets.QPushButton(FormPE)
self.PEBtn1B.setGeometry(QtCore.QRect(540, 420, 111, 40))
self.PEBtn1B.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.PEBtn1B.setFont(font)
self.PEBtn1B.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn1B.setText(" Decrease")
self.PEBtn1B.setObjectName("PEBtn1B")
self.PEBtn1A = QtWidgets.QPushButton(FormPE)
self.PEBtn1A.setGeometry(QtCore.QRect(550, 30, 111, 40))
self.PEBtn1A.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.PEBtn1A.setFont(font)
self.PEBtn1A.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn1A.setText(" Increase")
self.PEBtn1A.setObjectName("PEBtn1A")
self.PEBtn2A = QtWidgets.QPushButton(FormPE)
self.PEBtn2A.setGeometry(QtCore.QRect(690, 30, 111, 40))
self.PEBtn2A.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.PEBtn2A.setFont(font)
self.PEBtn2A.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn2A.setText(" Increase")
self.PEBtn2A.setObjectName("PEBtn2A")
self.PEBtn3A = QtWidgets.QPushButton(FormPE)
self.PEBtn3A.setGeometry(QtCore.QRect(830, 30, 111, 40))
self.PEBtn3A.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.PEBtn3A.setFont(font)
self.PEBtn3A.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn3A.setText(" Increase")
self.PEBtn3A.setObjectName("PEBtn3A")
self.PEBtn2B = QtWidgets.QPushButton(FormPE)
self.PEBtn2B.setGeometry(QtCore.QRect(690, 420, 111, 40))
self.PEBtn2B.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.PEBtn2B.setFont(font)
self.PEBtn2B.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn2B.setText(" Decrease")
self.PEBtn2B.setObjectName("PEBtn2B")
self.PEBtn3B = QtWidgets.QPushButton(FormPE)
self.PEBtn3B.setGeometry(QtCore.QRect(830, 420, 111, 40))
self.PEBtn3B.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.PEBtn3B.setFont(font)
self.PEBtn3B.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn3B.setText(" Decrease")
self.PEBtn3B.setObjectName("PEBtn3B")
self.retranslateUi(FormPE)
QtCore.QMetaObject.connectSlotsByName(FormPE)
def retranslateUi(self, FormPE):
_translate = QtCore.QCoreApplication.translate
FormPE.setWindowTitle(_translate("FormPE", "Form"))
#import PE_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
FormPE = QtWidgets.QWidget()
ui = Ui_FormPE()
ui.setupUi(FormPE)
FormPE.show()
sys.exit(app.exec_())
The above is my example.
Try it:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
# MainWindow.resize(960, 536)
MainWindow.setFixedSize(960, 470) # +
self.centralWidget = QtWidgets.QWidget(MainWindow)
# self.centralWidget.setStyleSheet("border-image: url(Ok.png);")
self.centralWidget.setObjectName("centralWidget") # +++
self.centralWidget.setStyleSheet("#centralWidget {border-image: url(Ok.png);}") # +++
self.frame = QtWidgets.QFrame(self.centralWidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 960, 500))
self.frame.setAutoFillBackground(False)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.PBtn1PE = QtWidgets.QPushButton(self.frame)
self.PBtn1PE.setEnabled(True)
self.PBtn1PE.setGeometry(QtCore.QRect(150, 400, 150, 50))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(False)
font.setWeight(50)
self.PBtn1PE.setFont(font)
self.PBtn1PE.setStyleSheet("""
border: 2px groove gray;
border-radius: 10px;
padding: 2px 4px;
background-color: red;
""")
self.PBtn1PE.setText("PE")
self.PBtn1PE.setDefault(False)
self.PBtn1PE.setObjectName("PBtn1PE")
self.PBtn2LC = QtWidgets.QPushButton(self.frame)
self.PBtn2LC.setGeometry(QtCore.QRect(400, 400, 150, 50))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(False)
font.setWeight(50)
self.PBtn2LC.setFont(font)
self.PBtn2LC.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: yellow;")
self.PBtn2LC.setObjectName("PBtn2LC")
self.PBtn3PP = QtWidgets.QPushButton(self.frame)
self.PBtn3PP.setGeometry(QtCore.QRect(650, 400, 150, 50))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(18)
font.setBold(False)
font.setWeight(50)
self.PBtn3PP.setFont(font)
self.PBtn3PP.setAutoFillBackground(False)
self.PBtn3PP.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: rgb(0, 162, 232);")
self.PBtn3PP.setObjectName("PBtn3PP")
self.BtnClose = QtWidgets.QPushButton(self.frame)
self.BtnClose.setGeometry(QtCore.QRect(860, 40, 81, 41))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.BtnClose.setFont(font)
self.BtnClose.setWhatsThis("")
self.BtnClose.setAccessibleName("")
self.BtnClose.setAutoFillBackground(False)
self.BtnClose.setStyleSheet("border:2px groove gray;\
border-radius:10px;padding:2px 4px;background-color: red;")
self.BtnClose.setText("Exit")
self.BtnClose.setObjectName("BtnClose")
MainWindow.setCentralWidget(self.centralWidget)
self.retranslateUi(MainWindow)
self.PBtn1PE.released.connect(MainWindow.show)
self.BtnClose.clicked.connect(self.frame.close)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
MainWindow.setTabOrder(self.PBtn1PE, self.PBtn2LC)
MainWindow.setTabOrder(self.PBtn2LC, self.PBtn3PP)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.PBtn2LC.setText(_translate("MainWindow", "LC"))
self.PBtn3PP.setText(_translate("MainWindow", "PP"))
class Ui_FormPE(object):
def setupUi(self, FormPE):
FormPE.setObjectName("FormPE")
FormPE.resize(960, 500)
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
FormPE.setFont(font)
FormPE.setStyleSheet("#FormPE {border-image: url(im.png);}") # + #FormPE
self.PEBtn1B = QtWidgets.QPushButton(FormPE)
self.PEBtn1B.setGeometry(QtCore.QRect(540, 420, 111, 40))
self.PEBtn1B.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16) # 16
font.setBold(True)
font.setWeight(75)
self.PEBtn1B.setFont(font)
self.PEBtn1B.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn1B.setText(" Decrease ") # " Decrease "
self.PEBtn1B.setObjectName("PEBtn1B")
self.PEBtn1A = QtWidgets.QPushButton(FormPE)
self.PEBtn1A.setGeometry(QtCore.QRect(550, 30, 111, 40))
self.PEBtn1A.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.PEBtn1A.setFont(font)
self.PEBtn1A.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn1A.setText(" Increase ")
self.PEBtn1A.setObjectName("PEBtn1A")
self.PEBtn2A = QtWidgets.QPushButton(FormPE)
self.PEBtn2A.setGeometry(QtCore.QRect(690, 30, 111, 40))
self.PEBtn2A.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.PEBtn2A.setFont(font)
self.PEBtn2A.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn2A.setText(" Increase ")
self.PEBtn2A.setObjectName("PEBtn2A")
self.PEBtn3A = QtWidgets.QPushButton(FormPE)
self.PEBtn3A.setGeometry(QtCore.QRect(830, 30, 111, 40))
self.PEBtn3A.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.PEBtn3A.setFont(font)
self.PEBtn3A.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn3A.setText(" Increase ")
self.PEBtn3A.setObjectName("PEBtn3A")
self.PEBtn2B = QtWidgets.QPushButton(FormPE)
self.PEBtn2B.setGeometry(QtCore.QRect(690, 420, 111, 40))
self.PEBtn2B.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.PEBtn2B.setFont(font)
self.PEBtn2B.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn2B.setText(" Decrease ")
self.PEBtn2B.setObjectName("PEBtn2B")
self.PEBtn3B = QtWidgets.QPushButton(FormPE)
self.PEBtn3B.setGeometry(QtCore.QRect(830, 420, 111, 40))
self.PEBtn3B.setMaximumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setFamily("MingLi")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.PEBtn3B.setFont(font)
self.PEBtn3B.setLayoutDirection(QtCore.Qt.RightToLeft)
self.PEBtn3B.setText(" Decrease ")
self.PEBtn3B.setObjectName("PEBtn3B")
self.retranslateUi(FormPE)
QtCore.QMetaObject.connectSlotsByName(FormPE)
def retranslateUi(self, FormPE):
_translate = QtCore.QCoreApplication.translate
FormPE.setWindowTitle(_translate("FormPE", "Form"))
class PB01(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(PB01, self).__init__(parent)
self.setupUi(self)
#pyqtSlot()
def on_PBtn1PE_clicked(self):
print("on_PBtn1PE_clicked")
self.FormPE = QtWidgets.QWidget()
ui = Ui_FormPE()
ui.setupUi(self.FormPE)
self.FormPE.show()
#pyqtSlot()
def on_PBtn2LC_clicked(self):
print("on_PBtn2LC_clicked")
#pyqtSlot()
def on_PBtn3PP_clicked(self):
print("on_PBtn3PP_clicked")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = PB01() # +++
w.show() # +++
# FormPE = QtWidgets.QWidget()
# ui = Ui_FormPE()
# ui.setupUi(FormPE)
# FormPE.show()
sys.exit(app.exec_())

PyQt5 identical push buttons, one works one doesn't

I tried writing some codes using pyqt5 and have two main windows and push buttons, for both cases I have done same but one works on clicked.connect and one doesn't. Pasting code for the button which doesn't work. I call this window after closing first one
I tried creating module outside of class and that worked but then struggled with referencing to lineEdit objects
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
PREMIX = QtWidgets.QMainWindow()
logo = QtGui.QIcon()
def init_login():
ui = Ui_PREMIXlogin()
ui.setupUi(PREMIX)
PREMIX.show()
sys.exit(app.exec_())
def close_login():
PREMIX.hide()
def init_main():
ui = Ui_PREMIX()
ui.setupUi(PREMIX)
PREMIX.show()
class Ui_PREMIXlogin(object):
def setupUi(self, PREMIXlogin):
PREMIXlogin.setObjectName("PREMIXlogin")
PREMIXlogin.setEnabled(True)
PREMIXlogin.resize(280, 319)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
PREMIXlogin.sizePolicy().hasHeightForWidth()
)
PREMIXlogin.setSizePolicy(sizePolicy)
PREMIXlogin.setMinimumSize(QtCore.QSize(280, 319))
PREMIXlogin.setMaximumSize(QtCore.QSize(280, 319))
PREMIXlogin.setMouseTracking(False)
PREMIXlogin.setWindowIcon(logo)
PREMIXlogin.setAutoFillBackground(False)
PREMIXlogin.setStyleSheet("background-color: rgb(255, 255, 255);")
self.centralwidget = QtWidgets.QWidget(PREMIXlogin)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(36, 190, 61, 20))
font = QtGui.QFont()
font.setPointSize(10)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(36, 220, 61, 20))
font = QtGui.QFont()
font.setPointSize(10)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(110, 190, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(110, 220, 113, 20))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lineEdit_2.setFont(font)
self.lineEdit_2.setInputMethodHints(
QtCore.Qt.ImhHiddenText
| QtCore.Qt.ImhNoAutoUppercase
| QtCore.Qt.ImhNoPredictiveText
| QtCore.Qt.ImhSensitiveData
)
self.lineEdit_2.setFrame(True)
self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(100, 260, 81, 31))
font = QtGui.QFont()
font.setPointSize(11)
font.setBold(False)
font.setWeight(50)
self.pushButton.setFont(font)
self.pushButton.setAutoFillBackground(False)
self.pushButton.setStyleSheet("background-color: rgb(222, 31, 38);")
self.pushButton.setObjectName("pushButton")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(30, 20, 231, 151))
self.frame.setStyleSheet(
"image: url(:/images/59301307_2353273704903079_3349139235981492224_n.png);"
)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
PREMIXlogin.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(PREMIXlogin)
self.statusbar.setObjectName("statusbar")
PREMIXlogin.setStatusBar(self.statusbar)
self.retranslateUi(PREMIXlogin)
QtCore.QMetaObject.connectSlotsByName(PREMIXlogin)
def retranslateUi(self, PREMIXlogin):
_translate = QtCore.QCoreApplication.translate
PREMIXlogin.setWindowTitle(_translate("PREMIXlogin", "PREMIX Login"))
self.label.setText(_translate("PREMIXlogin", "Username"))
self.label_2.setText(_translate("PREMIXlogin", "Password"))
self.pushButton.setText(_translate("PREMIXlogin", "Log in"))
self.pushButton.clicked.connect(self.on_click)
def on_click(self):
if True:
close_login()
init_main()
class Ui_PREMIX(object):
def setupUi(self, PREMIX):
PREMIX.setObjectName("PREMIX")
PREMIX.resize(473, 179)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(PREMIX.sizePolicy().hasHeightForWidth())
PREMIX.setSizePolicy(sizePolicy)
PREMIX.setMinimumSize(QtCore.QSize(473, 179))
PREMIX.setMaximumSize(QtCore.QSize(473, 179))
PREMIX.setStyleSheet("background-color: rgb(255, 255, 255);")
PREMIX.setWindowIcon(logo)
self.centralwidget = QtWidgets.QWidget(PREMIX)
self.centralwidget.setObjectName("centralwidget")
self.Product = QtWidgets.QLabel(self.centralwidget)
self.Product.setGeometry(QtCore.QRect(30, 20, 61, 20))
font = QtGui.QFont()
font.setPointSize(13)
self.Product.setFont(font)
self.Product.setObjectName("Product")
self.Productname = QtWidgets.QLineEdit(self.centralwidget)
self.Productname.setGeometry(QtCore.QRect(100, 20, 251, 20))
self.Productname.setObjectName("Productname")
self.Checkbutton = QtWidgets.QPushButton(self.centralwidget)
self.Checkbutton.setGeometry(QtCore.QRect(370, 20, 81, 21))
font = QtGui.QFont()
font.setPointSize(11)
font.setBold(False)
font.setWeight(50)
self.Checkbutton.setFont(font)
self.Checkbutton.setAutoFillBackground(False)
self.Checkbutton.setStyleSheet("background-color: rgb(222, 31, 38);")
self.Checkbutton.setObjectName("Checkbutton")
self.logo = QtWidgets.QFrame(self.centralwidget)
self.logo.setGeometry(QtCore.QRect(359, 60, 101, 80))
self.logo.setStyleSheet(
"image: url(:/images/59301307_2353273704903079_3349139235981492224_n.png);"
)
self.logo.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.logo.setFrameShadow(QtWidgets.QFrame.Raised)
self.logo.setObjectName("logo")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(180, 80, 91, 31))
self.lineEdit.setMinimumSize(QtCore.QSize(89, 31))
self.lineEdit.setMaximumSize(QtCore.QSize(91, 31))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit.setReadOnly(True)
PREMIX.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(PREMIX)
self.statusbar.setObjectName("statusbar")
PREMIX.setStatusBar(self.statusbar)
self.retranslateUi(PREMIX)
QtCore.QMetaObject.connectSlotsByName(PREMIX)
def retranslateUi(self, PREMIX):
_translate = QtCore.QCoreApplication.translate
PREMIX.setWindowTitle(_translate("PREMIX", "PREMIX"))
self.Product.setText(_translate("PREMIX", "Product"))
self.Checkbutton.setText(_translate("PREMIX", "Check"))
self.Checkbutton.clicked.connect(self.on_click)
def on_click(self):
print("aaaaaa")
product = self.Productname.text()
print(product)
def main():
init_login()
if __name__ == "__main__":
main()
I want Checkbutton on click event to work, please help
For Ui_Premix, used self.Checkbutton.clicked.connect(Ui_PREMIX.on_click) instead of
self.on_click even though on_click event was inside class, it works now

Categories

Resources