Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyQt: Add qpushbutton dynamically

I am trying to figure out how to create QPushButton by pressing another QPushbutton so that I can ultimately create buttons dynamically. It seems like the initial method for creating buttons doesn't work in a function.

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize   



class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)


    self.setMinimumSize(QSize(300, 200))    

    pybutton = QPushButton('Create a button', self)
    pybutton.clicked.connect(self.clickMethod)
    pybutton.resize(100,100)
    pybutton.move(100, 100)        

def clickMethod(self):
    print('Clicked')
    newBtn = QPushButton('New Button', self)
    newBtn.move(0, 0)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit( app.exec_() )
like image 441
riyadude Avatar asked Mar 06 '23 09:03

riyadude


1 Answers

When a window is displayed, it invokes the show() method of its children, so the children are visible. If you want the buttons that you add afterwards to be visible you must call the show() method of the button

def clickMethod(self):
    print('Clicked')
    newBtn = QPushButton('New Button', self)
    newBtn.move(0, 0)
    newBtn.show()

enter image description here

like image 187
eyllanesc Avatar answered Mar 20 '23 15:03

eyllanesc