#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()
希望这能解决你的问题。