По нажатию кнопки добавить новый элемент в окно

Привет всем! Подскажите пожалуйста как можно осуществить следующие: при нажатии кнопки происходит добавление нового элемента ( например кнопки) в окно
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
import  sys, serial
 
class Prog(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowFlags(QtCore.Qt.Window|QtCore.Qt.MSWindowsFixedSizeDialogHint)
        self.resize(150,100)
        self.Line = QtGui.QLabel('Zadai ygol',self)
        self.Line.move(20,10)
        self.Line1 = QtGui.QLineEdit(self)
        self.Line1.setGeometry(80,10,50,20)
 
        self.button = QtGui.QPushButton('go', self)
       
        self.button.setGeometry(30,50,80,30)
        QtCore.QObject.connect(self.button, QtCore.SIGNAL('clicked()'), self.editLine)
 
    def editLine(self):
 
        self.button2 = QtGui.QPushButton('Love', self) ------- вот как это по-другому прописать?
 
app = QtGui.QApplication(sys.argv)
prog = Prog()
prog.show()
sys.exit(app.exec_())
3 ответа

Примерно так:
from PyQt5.QtWidgets import (
  QApplication, QWidget, QLabel, QLineEdit, QPushButton, QHBoxLayout
)
from sys import argv, exit
 
class Prog(QWidget):
  def __init__(self):
    super().__init__()
    self.initUI()
  def initUI(self):
    # lblLabel
    self.lblLabel = QLabel('Zaday ugol', self)
    self.lblLabel.move(20, 10)
    # txtEdit
    self.txtEdit = QLineEdit(self)
    self.txtEdit.setGeometry(80, 10, 50, 20)
    # btnClick
    self.btnClick = QPushButton('Go!', self)
    self.btnClick.setGeometry(30, 50, 80, 30)
    self.btnClick.clicked.connect(self.addWidget)
    # frmMain
    self.resize(150, 150)
    self.setWindowTitle('Form1')
    self.show()
  def addWidget(self):
    self.btnDummy = QPushButton('Dummy')
    layout = QHBoxLayout()
    layout.addWidget(self.btnDummy)
    self.setLayout(layout)
 
app = QApplication(argv)
prog = Prog()
exit(app.exec_())


А в 4й версии сработает?Ребят, а как к 4й версии приспособить?


from PyQt4 import QtCore, QtGui
 
 
class MainWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowFlags(QtCore.Qt.Window |
                            QtCore.Qt.MSWindowsFixedSizeDialogHint)
        self.setLayout(QtGui.QVBoxLayout(self))
 
        self.labels = []
 
        self.create_new_label = QtGui.QPushButton('Создать новый label', self)
        self.layout().addWidget(self.create_new_label)
        self.create_new_label.clicked.connect(self.create_label)
 
    def create_label(self):
        new_label = QtGui.QLabel('label {}'.format(len(self.labels)), self)
        self.layout().addWidget(new_label)
        self.labels.append(new_label)
 
 
app = QtGui.QApplication([])
window = MainWindow()
window.show()
app.exec_()
self.lblLabel.move(20, 10)
Не пользуйся move, используй layouts