Pyqt5 help

Souvik Dutta souvik.viksou at gmail.com
Sat Feb 1 07:06:12 EST 2020


I was making a pyqt5 project and I ran into a problem. I want a button in
one window to add a label in another window when clicked upon. But that is
not happening. Now the no. Of labels depend upon something, so I decided to
use a for loop which is not working. Attaching the code below. Can you help?
-------------- next part --------------
from PyQt5 import QtWidgets, QtCore, QtGui
from datetime import *
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit
import sys

class mywindow(QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.setGeometry(100, 100, 700, 600)
        self.setWindowTitle("The HBT App")
       
        self.initUi()
    def initUi(self):
        self.img_label1 = QtWidgets.QLabel(self)
        self.img_label1.setGeometry(QtCore.QRect(235, 0, 470, 270))
        self.img_label1.setPixmap(QtGui.QPixmap("birthday cake.jpg"))
        self.img_label1.setScaledContents(True)
        self.img_label1 = QtWidgets.QLabel(self)
        self.img_label1.setGeometry(QtCore.QRect(0, 0, 240, 270))
        self.img_label1.setPixmap(QtGui.QPixmap("whitewash.jpg"))
        self.img_label1.setScaledContents(True)
        self.img_label2 = QtWidgets.QLabel(self)
        self.img_label2.setPixmap(QtGui.QPixmap("blackline.jpg"))
        self.img_label2.setGeometry(QtCore.QRect(100, 298, 605, 3))

        self.Label = QtWidgets.QLabel(self)
        self.Label.setText("Upcoming")
        
        self.Label.setFont(QtGui.QFont("Arial", 14))
        self.Label.setGeometry(QtCore.QRect(10, 280, 101, 31))
        
        self.button = QtWidgets.QPushButton(self)
        self.button.setText("Add..")
        self.button.setGeometry(QtCore.QRect(590, 510, 80, 60))
        self.button.clicked.connect(self.clicked)
        self.button.setFont(QtGui.QFont("Arial", 18))
     
        
        self.n = {}






    def clicked(self):
        self.NewWindow = QtWidgets.QMainWindow()
        self.NewWindow.setGeometry(100, 100, 500, 500)
        self.NewWindow.setWindowTitle("Add friends")
        self.FriendLabel = QtWidgets.QLabel(self.NewWindow)
        self.FriendLabel.setText("Add Friends")
        self.FriendLabel.setFont(QtGui.QFont("Comic Sans MS", 18))
        self.FriendLabel.setGeometry(180, 40, 400, 100)

        self.Namelabel = QtWidgets.QLabel(self.NewWindow)
        self.Namelabel.setText("Name : ")
        self.Namelabel.setGeometry(QtCore.QRect(80, 170, 90, 75))
        self.Namelabel.setFont(QtGui.QFont("Comic Sans MS", 14))
        self.Namefield = QLineEdit(self.NewWindow)
        self.Namefield.setGeometry(QtCore.QRect(160, 190, 250, 35))
        

        self.Datelabel = QtWidgets.QLabel(self.NewWindow)
        self.Datelabel.setText("Birthday:  ")
        self.Datelabel.setGeometry(QtCore.QRect(62, 240, 90, 75))
        self.Datelabel.setFont(QtGui.QFont("Comic Sans MS", 14))
        self.Datefield = QLineEdit(self.NewWindow)
        self.Datefield.setGeometry(QtCore.QRect(160, 260, 250, 35))

        self.Save = QtWidgets.QPushButton(self.NewWindow)
        self.Save.setText("Save")
        self.Save.setFont(QtGui.QFont("Comic Sans MS", 14))
        self.Save.setGeometry(QtCore.QRect(70, 360, 90, 50))
        self.Save.clicked.connect(self.save)

        self.Cancel = QtWidgets.QPushButton(self.NewWindow)
        self.Cancel.setText("Cancel")
        self.Cancel.setFont(QtGui.QFont("Comic Sans MS", 14))
        self.Cancel.setGeometry(QtCore.QRect(360, 360, 90, 50))
        self.Cancel.clicked.connect(self.cancel)
        self.NewWindow.show()

    def save(self):
        self.friend_name = self.Namefield.text()
        self.friend_date = self.Datefield.text()
        self.Namefield.clear()
        self.Datefield.clear()
        self.n[self.friend_name] = self.friend_date
        print(self.n)


        for a in self.n:
            NewLabel = QtWidgets.QLabel(self)
            NewLabel.setText(self.friend_name + "has birthday on " + self.friend_date)
            NewLabel.setGeometry(QtCore.QRect(30, 250, 100, 100))

        
        self.check_date()

    def check_date(self):
        today = datetime.now()
        only_date = today.day
        strdate = datetime.strptime(self.friend_date, "%d/%m").date()
        onlydate = strdate.day
        only_month = today.month
        onlymonth = strdate.month
        if only_month == onlymonth and onlydate == only_date:
            print("Today is ", self.friend_name, "'s birthday.")
    def cancel(self):
        self.Namefield.clear()
        self.Datefield.clear()
        


def window():

    app = QApplication(sys.argv)
    win = mywindow()

    win.show()
    sys.exit(app.exec_())

window()



More information about the Python-list mailing list