非常抱歉,我之前的回答有误。setCentralWidget是QMainWindow的一个方法,不能直接在QWidget中使用。如果你想在Welcome_Window中设置一个中心部件,可以将Welcome_Window改为继承自QMainWindow而不是QWidget。修改后的代码如下:
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
from PySide6.QtCore import Qt
class BaseWindow(QWidget):
def __init__(self):
super().__init__()
# 设置ESC事件
self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
self.setFocusPolicy(Qt.StrongFocus)
self.installEventFilter(self)
# 设置退出按钮
self.exit_button = QPushButton("退出", self)
self.exit_button.clicked.connect(self.confirm_exit)
def confirm_exit(self):
# 自定义的退出确认逻辑
reply = QMessageBox.question(
self, "退出", "确定要退出吗?", QMessageBox.Yes | QMessageBox.No
)
if reply == QMessageBox.Yes:
self.close()
class Welcome_Window(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("欢迎使用")
layout = QVBoxLayout()
layout.addWidget(self.exit_button)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
if __name__ == "__main__":
app = QApplication()
window_a = Welcome_Window()
window_a.show()
app.exec()
这样,Welcome_Window就继承了QMainWindow,可以使用setCentralWidget方法来设置中心部件。同时,我也修正了BaseWindow中退出按钮的点击事件的定义。希望这次能解决你的问题,如有其他疑问,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |