PyQt class显示问题

#python PyQt Mac

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel,QLineEdit,QDesktopWidget, QVBoxLayout,QGroupBox,QMainWindow
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt

class MyWindow(QWidget):
    def __int__(self):
        super().__init__()

        self.resize(1000,800)
        self.setWindowTitle("垂直布局")
        layout = QVBoxLayout()
        #创建布局器
        layout.addStretch(1)
        btn1 = QPushButton("button1")
        layout.addWidget(btn1)
        layout.addStretch(1)
        btn2 = QPushButton("button2")
        layout.addWidget(btn2)

        layout.addStretch(2)

        self.setLayout(layout)#让当前窗口使用这个排列规则

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()

    app.exec()

运行之后任何按钮、标题都无法显示,有人可以帮忙看看是为什么吗?

参考GPT和自己的思路:

在第6行代码中,类名 MyWindow 的 init 方法(即构造函数)被拼写错误,应该为 __init__(两个下划线),而不是 __int__(两个字母 i 和一个 n)。正确的代码应该是:

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.resize(1000,800)
        self.setWindowTitle("垂直布局")
        layout = QVBoxLayout()
        #创建布局器
        layout.addStretch(1)
        btn1 = QPushButton("button1")
        layout.addWidget(btn1)
        layout.addStretch(1)
        btn2 = QPushButton("button2")
        layout.addWidget(btn2)

        layout.addStretch(2)

        self.setLayout(layout)#让当前窗口使用这个排列规则

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()

    app.exec()

另外,上述代码中缺少了一个导入语句:

from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel,QLineEdit,QDesktopWidget, QVBoxLayout,QGroupBox

如果不加入这行代码将会报错:

NameError: name 'QGroupBox' is not defined

参考GPT和自己的思路:

经过仔细查看代码,发现在MyWindow类中的__init__方法中有一个错误。正确的语法应该是__init__而不是__int__。修改这个错误之后,按钮和标题就能被正确地显示了。代码示例如下:

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel,QLineEdit,QDesktopWidget, QVBoxLayout,QGroupBox,QMainWindow
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.resize(1000,800)
        self.setWindowTitle("垂直布局")
        layout = QVBoxLayout()
        #创建布局器
        layout.addStretch(1)
        btn1 = QPushButton("button1")
        layout.addWidget(btn1)
        layout.addStretch(1)
        btn2 = QPushButton("button2")
        layout.addWidget(btn2)

        layout.addStretch(2)

        self.setLayout(layout)#让当前窗口使用这个排列规则

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()

    app.exec()

希望这能解决你的问题。