Python - пример перерисовки окна - добавление виджета - кнопки + удаление кнопки при клике по ней
Primary tabs
О том, как создавалась область прокрутки - подробнее здесь
вот пример кода (+ удаление кнопки при клике по ней):
from PyQt4 import QtGui, QtCore import sys class Main(QtGui.QMainWindow): def __init__(self, parent = None): super(Main, self).__init__(parent) # главная кнопка self.addButton = QtGui.QPushButton('Кнопка добавления') # подключаем дейсвтие для добавления новой новой кнопки # при натажии на Кнопку добавления self.addButton.clicked.connect(self.addWidget) # определяем содержимое области(виджета) прокрутки # - а именно слой формата (QFormLayout) - два столбца self.scrollLayout = QtGui.QFormLayout() # добавляем ране созданный слой прокрутки # на виджет прокрутки self.scrollWidget = QtGui.QWidget() # cначала создаём сам виджет self.scrollWidget.setLayout(self.scrollLayout) # добавляем на него слой # определяем область механизм прокрутки (QScrollArea) self.scrollArea = QtGui.QScrollArea() self.scrollArea.setWidgetResizable(True) #разрешаем проктурку #добавляем на область виджет, с ранее добавленным на него слоем слоем self.scrollArea.setWidget(self.scrollWidget) # создаём главный вертикальный слой self.mainLayout = QtGui.QVBoxLayout() # добавляем элементы на главный слой self.mainLayout.addWidget(self.addButton) # добавляем основную кнопку self.mainLayout.addWidget(self.scrollArea) # добавляем область прокрутки # определяем "центральный виджет" self.centralWidget = QtGui.QWidget() self.centralWidget.setLayout(self.mainLayout) # устанавливаем "центральный виджет" self.setCentralWidget(self.centralWidget) def addWidget(self): self.scrollLayout.addRow(TestButton()) class TestButton(QtGui.QPushButton): def __init__( self, parent=None): super(TestButton, self).__init__(parent) self.setText("Это появляющаяся кнопка") self.clicked.connect(self.deleteLater) # подключаем действие самоудаления app = QtGui.QApplication(sys.argv) myWidget = Main() myWidget.show() app.exec_()
- Log in to post comments
- 6138 reads