from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton class MyWindow(QMainWindow): def __init__(self): super().__init__() btn = QPushButton('确认', self) btn.setGeometry(50, 50, 100, 50) self.setCentralWidget(btn) if __name__ == '__main__': app = QApplication([]) window = MyWindow() window.show() app.exec();以上代码运行后,为什么BTN占满了整个窗口
时间: 2024-02-29 18:52:28 浏览: 19
经过仔细检查,我发现您的代码中存在一个小错误。在 `__init__` 方法中,当您创建 `btn` 对象时,您没有将其设置为 `self` 对象的属性。这意味着在方法结束时,`btn` 对象将被删除。因此,当您将其设置为中心部件时,实际上将整个窗口设置为了按钮,因此按钮占据了整个窗口。
要解决这个问题,您需要将 `btn` 对象设置为 `self` 对象的属性,以便在方法结束时它不会被删除。这可以通过将 `btn` 改为 `self.btn` 来实现。以下是修改后的代码:
```python
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.btn = QPushButton('确认', self)
self.btn.setGeometry(50, 50, 100, 50) # 设置按钮的位置和大小
self.setCentralWidget(self.btn) # 将btn设置为主窗口的中心部件
if __name__ == '__main__':
app = QApplication([])
window = MyWindow()
window.show()
app.exec()
```
现在运行代码,您应该能够看到一个带有 "确认" 按钮的窗口,而不是一个完全由按钮填充的窗口。