按钮不显示

Button doesn't show up

我正在尝试为 python 脚本做一个简单的 GUI,将一些文本转换为特定格式,但按钮没有显示在 window。

我先创建按钮class

class Button(QPushButton):
    def __init__(self, btn_name=None):
        super().__init__()
        self.button = QPushButton(btn_name)
        self.button.setCursor(
            QCursor(QtCore.Qt.CursorShape.PointingHandCursor))
        self.button.setStyleSheet(
            """*{border: 4px solid 'green';
            border-radius: 45px;
            font-size: 35px;
            color: 'white';
            padding: 25px 0;
            margin: 100px, 200px}
            *:hover{background: 'green'}
            *:pressed{background: 'lightgreen'}"""
        )

然后像这样创建 window class

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.window = QWidget()
        self.window.resize(500, 500)
        self.window.setWindowTitle("Pantuflis Software")
        self.window.setFixedWidth(1000)
        self.window.setStyleSheet("background: 'black';")
        self.grid = QGridLayout()
        self.window.setLayout(self.grid)
        self.button = Button("Play")
        self.grid.addWidget(self.button)
        self.window.show()

最后加上剩下的

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

但是按钮没有出现,只有主要 window 出现了。我也尝试过相同的方法,但没有从我自己的 class 中创建按钮并且可以工作。一定是按钮有问题 class 但我看不出是什么。

如果您要实现继承,则必须将更改应用到 class。在您的情况下,它有一个继承自 QPushButton 的 class,但您可以在其中创建不需要的自定义按钮,这与主 window 相同。我的建议是 OP 应该查看他关于继承的注释。

import sys

from PyQt6.QtCore import Qt
from PyQt6.QtGui import QCursor
from PyQt6.QtWidgets import QApplication, QGridLayout, QPushButton, QWidget


class Button(QPushButton):
    def __init__(self, btn_name=""):
        super().__init__(btn_name)
        self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
        self.setStyleSheet(
            """*{border: 4px solid 'green';
            border-radius: 45px;
            font-size: 35px;
            color: 'white';
            padding: 25px 0;
            margin: 100px, 200px}
            *:hover{background: 'green'}
            *:pressed{background: 'lightgreen'}"""
        )


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500, 500)
        self.setWindowTitle("Pantuflis Software")
        self.setFixedWidth(1000)
        self.setStyleSheet("background: 'black';")
        self.grid = QGridLayout(self)
        self.button = Button("Play")
        self.grid.addWidget(self.button)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())