Кнопка в кнопке, PyQt

Как сделать что-то на подобии такого:

введите сюда описание изображения

Как это организовать?


Ответы (1 шт):

Автор решения: S. Nick

Сделайте родителем второй кнопки первую кнопку и установите ее (вторую кнопку) куда вам надо.

import sys
from PyQt5 import QtWidgets, QtGui, QtCore 
from PyQt5.Qt import *


class PushButton(QtWidgets.QPushButton):
    def __init__(self, *args, **kwargs):
        super(PushButton, self).__init__(*args, **kwargs)


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("NCM manager")
        self.setWindowIcon(QIcon('im.png'))
        self.setStyleSheet("background-color: rgb(42, 42, 40);")
        
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget) 
        
        self.pushButton_1 = PushButton('Button 1', size=QSize(620, 300))   # !!!
        self.pushButton_1.setStyleSheet(
            "background-color: #238b45; color: #edf8fb;")
        self.pushButton_1.clicked.connect(self.a)
        self.pushButton_1.setMinimumHeight(43)
        self.pushButton_1.setMinimumWidth(280)
# ------------------------------------------------> vvvvvvvvvvvvvvvvv <--------
        self.pushButton_2 = QPushButton('Button 2', self.pushButton_1)    # !!!
        self.pushButton_2.setStyleSheet(
            "background-color: rgb(242, 142, 140); ; color: #005824;")
        self.pushButton_2.clicked.connect(self.b)
        
        layout = QVBoxLayout(self.centralWidget)
        layout.addWidget(self.pushButton_1)
        
    def a(self):
        print(f'clicked Button 1 {self.pushButton_1}')

    def b(self):
        print(f'clicked Button 2 {self.pushButton_2}')
        
    def resizeEvent(self, event):
        self.pushButton_2.move(self.pushButton_1.rect().width()-90, 10)     # !!!

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.resize(640, 300)
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка