pyqt qwidget 不显示标题栏,单机widget外边,关闭widget
时间: 2024-10-06 10:01:23 浏览: 28
PyQt5实现无边框窗口的标题拖动和窗口缩放
在PyQt中,如果你想创建一个不带标题栏的QMainWindow或QWidget,并且希望在点击窗口外部时关闭它,可以这样做:
1. 使用`QMainWindow`而不是`QWidget`,因为窗口通常都有标题栏。如果坚持要用`QWidget`,可以将其放在`QMainWindow`内作为内部窗口。
```python
from PyQt5.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
class NoTitleBarWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setAttribute(Qt.WA_TranslucentBackground) # 透明背景
self.setWindowFlags(Qt.FramelessWindowHint) # 窗口无边框
layout = QVBoxLayout()
close_button = QPushButton("关闭", self)
layout.addWidget(close_button)
self.setLayout(layout)
close_button.clicked.connect(self.close) # 关闭按钮连接到关闭方法
self.showMaximized() # 显示窗口最大化
def closeEvent(self, event): # 自定义关闭事件
reply = QMessageBox.question(self, '提示', '真的要关闭吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication([])
window = NoTitleBarWindow()
app.exec_()
```
在这个例子中,窗口没有标题栏,有一个关闭按钮,点击按钮或窗口外部都会弹出确认对话框询问是否关闭。
阅读全文